Mercurial > repos > iuc > maplot
changeset 0:e9212adafd7a draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-iuc commit d5065f0bdf2d38c2344d96d68537223c1096daab
author | iuc |
---|---|
date | Thu, 15 May 2025 12:55:13 +0000 |
parents | |
children | |
files | maplot.py maplot.xml test-data/ma_plot_testdata_4.csv test-data/output_matplotlib.pdf test-data/output_plotly.pdf |
diffstat | 5 files changed, 1324 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/maplot.py Thu May 15 12:55:13 2025 +0000 @@ -0,0 +1,515 @@ +import argparse +from typing import Dict, List, Tuple + +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import plotly.graph_objects as go +import plotly.io as pio +import plotly.subplots as sp +import statsmodels.api as sm # to build a LOWESS model +from scipy.stats import gaussian_kde + + +# subplot titles +def make_subplot_titles(sample_names: List[str]) -> List[str]: + """Generates subplot titles for the MA plot. + + Args: + sample_names (list): List of sample names. + + Returns: + list: List of subplot titles. + """ + subplot_titles = [] + num_samples = len(sample_names) + for i in range(num_samples): + for j in range(num_samples): + if i == j: + subplot_titles.append(f"{sample_names[i]}") + else: + subplot_titles.append(f"{sample_names[i]} vs. {sample_names[j]}") + return subplot_titles + + +def densities(x: np.ndarray, y: np.ndarray) -> np.ndarray: + """Calculates the density of points for a scatter plot. + + Args: + x (array-like): X-axis values. + y (array-like): Y-axis values. + + Returns: + array: Density values for the points. + """ + values = np.vstack([x, y]) + return gaussian_kde(values)(values) + + +def movingaverage(data: np.ndarray, window_width: int) -> np.ndarray: + """Calculates the moving average of the data. + + Args: + data (array-like): Input data. + window_width (int): Width of the moving window. + + Returns: + array: Moving average values. + """ + cumsum_vec = np.cumsum(np.insert(data, 0, 0)) + ma_vec = (cumsum_vec[window_width:] - cumsum_vec[:-window_width]) / window_width + return ma_vec + + +def update_max(current: float, values: np.ndarray) -> float: + """Updates the maximum value. + + Args: + current (float): Current maximum value. + values (array-like): Array of values to compare. + + Returns: + float: Updated maximum value. + """ + return max(current, np.max(values)) + + +def get_indices( + num_samples: int, num_cols: int, plot_num: int +) -> Tuple[int, int, int, int]: + """Calculates the indices for subplot placement. + + Args: + num_samples (int): Number of samples. + num_cols (int): Number of columns in the subplot grid. + plot_num (int): Plot number. + + Returns: + tuple: Indices for subplot placement (i, j, col, row). + """ + i = plot_num // num_samples + j = plot_num % num_samples + col = plot_num % num_cols + 1 + row = plot_num // num_cols + 1 + return i, j, col, row + + +def create_subplot_data( + frac: float, + it: int, + num_bins: int, + window_width: int, + samples: pd.DataFrame, + i: int, + j: int, +) -> Dict: + """Creates data for a single subplot. + + Args: + frac (float): LOESS smoothing parameter. + it (int): Number of iterations for LOESS smoothing. + num_bins (int): Number of bins for histogram. + window_width (int): Window width for moving average. + samples (DataFrame): DataFrame containing sample data. + i (int): Index of the first sample. + j (int): Index of the second sample. + + Returns: + dict: Data for the subplot. + """ + subplot_data = {} + subplot_data["mean"] = np.log(samples.iloc[:, [i, j]].mean(axis=1)) + if i == j: + counts, bins = np.histogram(subplot_data["mean"], bins=num_bins) + subplot_data["bins"] = bins + subplot_data["counts"] = counts + subplot_data["counts_smoothed"] = movingaverage(counts, window_width) + subplot_data["max_counts"] = np.max(counts) + else: + subplot_data["log_fold_change"] = np.log2( + samples.iloc[:, i] / samples.iloc[:, j] + ) + subplot_data["max_log_fold_change"] = np.max(subplot_data["log_fold_change"]) + subplot_data["densities"] = densities( + subplot_data["mean"], subplot_data["log_fold_change"] + ) + subplot_data["regression"] = sm.nonparametric.lowess( + subplot_data["log_fold_change"], subplot_data["mean"], frac=frac, it=it + ) + return subplot_data + + +def create_plot_data( + frac: float, + it: int, + num_bins: int, + window_width: int, + samples: pd.DataFrame, + num_samples: int, + num_plots: int, + num_cols: int, +) -> List[Dict]: + """Creates data for all subplots. + + Args: + frac (float): LOESS smoothing parameter. + it (int): Number of iterations for LOESS smoothing. + num_bins (int): Number of bins for histogram. + window_width (int): Window width for moving average. + samples (DataFrame): DataFrame containing sample data. + num_samples (int): Number of samples. + num_plots (int): Number of plots. + num_cols (int): Number of columns in the subplot grid. + + Returns: + list: List of data for each subplot. + """ + plots_data = [] + for plot_num in range(num_plots): + i, j, _, _ = get_indices(num_samples, num_cols, plot_num) + subplot_data = create_subplot_data( + frac, it, num_bins, window_width, samples, i, j + ) + plots_data.append(subplot_data) + return plots_data + + +def ma_plots_plotly( + num_rows: int, + num_cols: int, + num_plots: int, + plots_data: List[Dict], + sample_names: List[str], + size: int, + ylim_hist: float, + ylim_ma: float, + features: np.ndarray, +) -> go.Figure: + """Generates MA plots using Plotly. + + Args: + num_rows (int): Number of rows in the subplot grid. + num_cols (int): Number of columns in the subplot grid. + num_plots (int): Number of plots. + plots_data (list): List of data for each subplot. + sample_names (list): List of sample names. + size (int): Size of the plot. + ylim_hist (float): Y-axis limit for histograms. + ylim_ma (float): Y-axis limit for MA plots. + features (array-like): Feature names. + + Returns: + Figure: Plotly figure object. + """ + fig = sp.make_subplots( + rows=num_rows, + cols=num_cols, + shared_xaxes="all", + subplot_titles=make_subplot_titles(sample_names), + ) + + for plot_num in range(num_plots): + i, j, col, row = get_indices(len(sample_names), num_cols, plot_num) + subplot_data = plots_data[plot_num] + + mean = subplot_data["mean"] + + if i == j: + # Plot histogram on the diagonal + hist_bar = go.Bar( + x=subplot_data["bins"], + y=subplot_data["counts"], + ) + fig.add_trace(hist_bar, row=row, col=col) + + hist_line = go.Scatter( + x=subplot_data["bins"], + y=subplot_data["counts_smoothed"], + marker=dict( + color="red", + ), + ) + fig.add_trace(hist_line, row=row, col=col) + fig.update_yaxes( + title_text="Counts", + range=[0, ylim_hist], + matches="y1", + showticklabels=True, + row=row, + col=col, + ) + else: + log_fold_change = subplot_data["log_fold_change"] + scatter = go.Scatter( + x=mean, + y=log_fold_change, + mode="markers", + marker=dict( + color=subplot_data["densities"], symbol="circle", colorscale="jet" + ), + name=f"{sample_names[i]} vs {sample_names[j]}", + text=features, + hovertemplate="<b>%{text}</b><br>Log Mean: %{x}<br>Log2 Fold Change: %{y}<extra></extra>", + ) + fig.add_trace(scatter, row=row, col=col) + + regression = subplot_data["regression"] + line = go.Scatter( + x=regression[:, 0], + y=regression[:, 1], + mode="lines", + line=dict(color="red"), + name=f"LOWESS {sample_names[i]} vs. {sample_names[j]}", + ) + fig.add_trace(line, row=row, col=col) + + fig.update_yaxes( + title_text="Log2 Fold Change", + range=[-ylim_ma, ylim_ma], + matches="y2", + showticklabels=True, + row=row, + col=col, + ) + fig.update_xaxes( + title_text="Log Mean Intensity", showticklabels=True, row=row, col=col + ) + + # Update layout for the entire figure + fig.update_layout( + height=size * num_rows, + width=size * num_cols, + showlegend=False, + template="simple_white", # Apply the 'plotly_white' template + ) + return fig + + +def ma_plots_matplotlib( + num_rows: int, + num_cols: int, + num_plots: int, + pots_data: List[Dict], + sample_names: List[str], + size: int, + ylim_hist: float, + ylim_ma: float, + window_width: int, +) -> plt.Figure: + """Generates MA plots using Matplotlib. + + Args: + num_rows (int): Number of rows in the subplot grid. + num_cols (int): Number of columns in the subplot grid. + num_plots (int): Number of plots. + pots_data (list): List of data for each subplot. + sample_names (list): List of sample names. + size (int): Size of the plot. + ylim_hist (float): Y-axis limit for histograms. + ylim_ma (float): Y-axis limit for MA plots. + window_width (int): Window width for moving average. + + Returns: + Figure: Matplotlib figure object. + """ + subplot_titles = make_subplot_titles(sample_names) + fig, axes = plt.subplots( + num_rows, + num_cols, + figsize=(size * num_cols / 100, size * num_rows / 100), + dpi=300, + sharex="all", + ) + axes = axes.flatten() + + for plot_num in range(num_plots): + i, j, _, _ = get_indices(len(sample_names), num_cols, plot_num) + subplot_data = pots_data[plot_num] + + mean = subplot_data["mean"] + + ax = axes[plot_num] + + if i == j: + # Plot histogram on the diagonal + ax.bar( + subplot_data["bins"][:-1], + subplot_data["counts"], + width=np.diff(subplot_data["bins"]), + edgecolor="black", + align="edge", + ) + + # Plot moving average line + ax.plot( + subplot_data["bins"][window_width // 2: -window_width // 2], + subplot_data["counts_smoothed"], + color="red", + ) + + ax.set_ylabel("Counts") + ax.set_ylim(0, ylim_hist) + else: + # Scatter plot + ax.scatter( + mean, + subplot_data["log_fold_change"], + c=subplot_data["densities"], + cmap="jet", + edgecolor="black", + label=f"{sample_names[i]} vs {sample_names[j]}", + ) + + # Regression line + regression = subplot_data["regression"] + ax.plot( + regression[:, 0], + regression[:, 1], + color="red", + label=f"LOWESS {sample_names[i]} vs. {sample_names[j]}", + ) + + ax.set_ylabel("Log2 Fold Change") + ax.set_ylim(-ylim_ma, ylim_ma) + + ax.set_xlabel("Log Mean Intensity") + ax.tick_params(labelbottom=True) # Force showing x-tick labels + ax.set_title(subplot_titles[plot_num]) # Add subplot title + + # Adjust layout + plt.tight_layout() + return fig + + +def main(): + """Main function to generate MA plots.""" + parser = argparse.ArgumentParser(description="Generate MA plots.") + parser.add_argument("--file_path", type=str, help="Path to the input CSV file") + parser.add_argument("--file_extension", type=str, help="File extension") + parser.add_argument( + "--frac", type=float, default=4 / 5, help="LOESS smoothing parameter" + ) + parser.add_argument( + "--it", type=int, default=5, help="Number of iterations for LOESS smoothing" + ) + parser.add_argument( + "--num_bins", type=int, default=100, help="Number of bins for histogram" + ) + parser.add_argument( + "--window_width", type=int, default=5, help="Window width for moving average" + ) + parser.add_argument("--size", type=int, default=500, help="Size of the plot") + parser.add_argument( + "--scale", type=int, default=3, help="Scale factor for the plot" + ) + parser.add_argument( + "--y_scale_factor", type=float, default=1.1, help="Y-axis scale factor" + ) + parser.add_argument( + "--max_num_cols", + type=int, + default=100, + help="Maximum number of columns in the plot", + ) + parser.add_argument( + "--interactive", + action="store_true", + help="Generate interactive plot using Plotly", + ) + parser.add_argument( + "--output_format", + type=str, + default="pdf", + choices=["pdf", "png", "html"], + help="Output format for the plot", + ) + parser.add_argument( + "--output_file", + type=str, + default="ma_plot", + help="Output file name without extension", + ) + + args = parser.parse_args() + + # Load the data + file_extension = args.file_extension.lower() + if file_extension == "csv": + data = pd.read_csv(args.file_path) + elif file_extension in ["txt", "tsv", "tabular"]: + data = pd.read_csv(args.file_path, sep="\t") + elif file_extension == "parquet": + data = pd.read_parquet(args.file_path) + else: + raise ValueError(f"Unsupported file format: {file_extension}") + + features = data.iloc[:, 0] # Assuming the first column is the feature names + samples = data.iloc[:, 1:] # and the rest are samples + + # Create a subplot figure + num_samples = samples.shape[1] + sample_names = samples.columns + num_plots = num_samples**2 + num_cols = min(num_samples, args.max_num_cols) + num_rows = int(np.ceil(num_plots / num_cols)) + + plots_data = create_plot_data( + args.frac, + args.it, + args.num_bins, + args.window_width, + samples, + num_samples, + num_plots, + num_cols, + ) + + count_max = np.max([x.get("max_counts", 0) for x in plots_data]) + log_fold_change_max = np.max([x.get("max_log_fold_change", 0) for x in plots_data]) + + ylim_hist = count_max * args.y_scale_factor + ylim_ma = log_fold_change_max * args.y_scale_factor + + if args.interactive: + fig = ma_plots_plotly( + num_rows, + num_cols, + num_plots, + plots_data, + sample_names, + args.size, + ylim_hist, + ylim_ma, + features, + ) + fig.show() + if args.output_format == "html": + fig.write_html(f"{args.output_file}") + else: + pio.write_image( + fig, + f"{args.output_file}", + format=args.output_format, + width=args.size * num_cols, + height=args.size * num_rows, + scale=args.scale, + ) + else: + fig = ma_plots_matplotlib( + num_rows, + num_cols, + num_plots, + plots_data, + sample_names, + args.size, + ylim_hist, + ylim_ma, + args.window_width, + ) + plt.show() + fig.savefig(f"{args.output_file}", format=args.output_format, dpi=300) + return 0 + + +if __name__ == "__main__": + main()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/maplot.xml Thu May 15 12:55:13 2025 +0000 @@ -0,0 +1,142 @@ +<tool id="maplot" name="MA plot" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="20.01" license="MIT"> + <description>Generate MA plots for visualizing data distributions.</description> + <macros> + <token name="@TOOL_VERSION@">1.0.0</token> + <token name="@VERSION_SUFFIX@">0</token> + </macros> + <edam_topics> + <edam_topic>topic_0092</edam_topic> + </edam_topics> + <edam_operations> + <edam_operation>operation_0337</edam_operation> + </edam_operations> + <requirements> + <requirement type="package" version="6.0.0">plotly</requirement> + <requirement type="package" version="1.13.1">scipy</requirement> + <requirement type="package" version="2.2.3">pandas</requirement> + <requirement type="package" version="0.14.4">statsmodels</requirement> + <requirement type="package" version="3.9.4">matplotlib-base</requirement> + <requirement type="package" version="0.2.1">python-kaleido</requirement> + </requirements> + <creator> + <person + givenName="Helge" + familyName="Hecht" + url="https://github.com/hechth" + identifier="0000-0001-6744-996X" /> + <organization + url="https://www.recetox.muni.cz/" + email="GalaxyToolsDevelopmentandDeployment@space.muni.cz" + name="RECETOX MUNI" /> + </creator> + <command detect_errors="exit_code"><![CDATA[ + python3 '$__tool_directory__/maplot.py' + --file_path '$file_path' + --file_extension '$file_path.ext' + --frac $frac + --it $it + --num_bins $num_bins + --window_width $window_width + --size $size + --scale $scale + --y_scale_factor $y_scale_factor + --max_num_cols $max_num_cols + #if $backend_conditional.backend == "plotly" + --interactive + #end if + --output_format '$output_format' + --output_file '$output_file' + ]]></command> + + <inputs> + <param argument="--file_path" type="data" label="Input File" format="csv,tsv,tabular,parquet" help="The input file containing the data to be visualized." /> + <param argument="--frac" type="float" value="0.8" label="LOESS Smoothing Fraction" help="The fraction of data points used for LOESS smoothing. This controls the degree of smoothing applied to the data." /> + <param argument="--it" type="integer" value="5" label="Number of Iterations" help="The number of iterations for LOESS smoothing. Increasing this value may improve accuracy but will also increase computation time." /> + <param argument="--num_bins" type="integer" value="100" label="Number of Bins" help="The number of bins to use for the histogram. This determines the granularity of the histogram visualization." /> + <param argument="--window_width" type="integer" value="5" label="Window Width" help="The width of the moving average window. This affects how the data is smoothed over a range of values." /> + <param argument="--size" type="integer" value="500" label="Plot Size" help="The size of the plot in pixels. Larger values produce higher-resolution plots." /> + <param argument="--scale" type="integer" value="3" label="Scale Factor" help="The scale factor for the plot. This controls the resolution of the output plot." /> + <param argument="--y_scale_factor" type="float" value="1.1" label="Y-Axis Scale Factor" help="A factor to scale the Y-axis. This can be used to adjust the vertical range of the plot." /> + <param argument="--max_num_cols" type="integer" value="100" label="Maximum Number of Columns" help="The maximum number of columns to display in the plot. This limits the number of subplots in the visualization." /> + + <conditional name="backend_conditional"> + <param name="backend" type="select" label="Backend for Plotting" help="Choose the backend for generating the plot. Plotly supports interactive plots, while Matplotlib generates static plots."> + <option value="plotly" selected="true">Plotly</option> + <option value="matplotlib">Matplotlib</option> + </param> + <when value="plotly"> + <param argument="--output_format" type="select" label="Output Format" help="The output format for the plot when using Plotly. Options include PDF, PNG, and HTML."> + <option value="pdf" selected="true">PDF</option> + <option value="png">PNG</option> + <option value="html">HTML</option> + </param> + </when> + <when value="matplotlib"> + <param argument="--output_format" type="select" label="Output Format" help="The output format for the plot when using Matplotlib. Options include PDF and PNG."> + <option value="pdf" selected="true">PDF</option> + <option value="png">PNG</option> + </param> + </when> + </conditional> + </inputs> + <outputs> + <data name="output_file" format="pdf" label="MA plot with ${backend_conditional.backend} on ${on_string}"> + <change_format> + <when input="output_format" value="png" format="png" /> + <when input="output_format" value="html" format="html" /> + </change_format> + </data> + </outputs> + <tests> + <test> + <param name="file_path" value="ma_plot_testdata_4.csv" /> + <conditional name="backend_conditional"> + <param name="backend" value="plotly" /> + <param name="output_format" value="pdf" /> + </conditional> + <output name="output_file" file="output_plotly.pdf" /> + </test> + + <!-- Test case for Matplotlib backend with default parameters --> + <test> + <param name="file_path" value="ma_plot_testdata_4.csv" /> + <conditional name="backend_conditional"> + <param name="backend" value="matplotlib" /> + <param name="output_format" value="pdf" /> + </conditional> + <output name="output_file" file="output_matplotlib.pdf" /> + </test> + </tests> + <help><![CDATA[ +.. class:: infomark + +**What it does** + +This tool generates MA plots for visualizing data distributions. It supports two backends for plotting: Plotly and Matplotlib. Users can customize various parameters such as smoothing, binning, and scaling to tailor the visualization to their needs. + +**Input** + +- **Input File**: A CSV, TSV, tabular, or Parquet file containing the data to be visualized. + +**Parameters** + +- **LOESS Smoothing Fraction**: Fraction of data points used for LOESS smoothing. +- **Number of Iterations**: Number of iterations for LOESS smoothing. +- **Number of Bins**: Number of bins for the histogram. +- **Window Width**: Width of the moving average window. +- **Plot Size**: Size of the plot in pixels. +- **Scale Factor**: Scale factor for the plot resolution. +- **Y-Axis Scale Factor**: Factor to scale the Y-axis. +- **Maximum Number of Columns**: Maximum number of columns to display in the plot. +- **Backend for Plotting**: Choose between Plotly and Matplotlib. +- **Output Format**: Format of the output plot (PDF, PNG, or HTML). + +**Output** + +The tool generates a plot in the specified format (PDF, PNG, or HTML). + ]]></help> + <citations> + <citation type="doi">10.2307/2987937</citation> + <citation type="doi">10.1016/S0140-6736(86)90837-8</citation> + </citations> +</tool> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/ma_plot_testdata_4.csv Thu May 15 12:55:13 2025 +0000 @@ -0,0 +1,667 @@ +,11_qc_8x_dil_milliq,18_qc_2x_dil_milliq,19_qc_4x_dil_milliq,20_qc_8x_dil_milliq +C001,825602069.471457,6841926617.68507,3495838261.59415,1622523147.76126 +C002,723408.81037537,4831346.96157894,1788032.62816502,640795.843947452 +C003,136378479.936738,397485855.124068,86666570.700872,53170013.4054381 +C004,59923635.2683013,403591765.378911,161932726.197182,56984554.5654063 +C005,284650326.294548,1634639800.52803,716503847.712881,276995489.653881 +C006,166507523.406581,824604043.995038,362788104.55347,159691119.961467 +C007,19456210.1910098,63215963.4517072,33953156.2561005,23627403.6847447 +C008,3160475.47802609,15117813.4996536,5348098.43518815,2676130.11133333 +C009,978783.589475395,6405810.82525194,2260351.91819805,818778.720581346 +C010,5889521.56880125,41903823.6003721,16343289.8569915,6122125.60449193 +C011,3636435.75142038,4664966.53723467,5833018.88310524,3202117.84304701 +C012,5363177.34503922,41455804.6463667,15087932.9899938,5485651.5268171 +C013,152377948.835161,764328397.260434,347446605.045943,140756315.894966 +C014,14690344.3770585,104875250.65202,73380007.1813723,13803342.094887 +C015,48326764.9643576,190889041.456073,100955856.348986,45664904.6369003 +C016,285969.191133343,340616.638239711,1179928.47883999,14848.3372078916 +C017,63407409.5499573,469855399.834858,174355439.54458,60513837.8307332 +C018,39577583.2923801,211380462.705106,98066708.048938,25433059.8454813 +C019,124413060.025709,542718498.900448,260514030.935251,115728094.595096 +C020,257156983.196035,1145306199.36524,551436345.160302,179901253.688827 +C021,44800573.7335226,315340389.819491,96021202.8736825,63528967.9736323 +C022,4716464.8768336,15926051.9415363,8792750.14828011,3895494.91273838 +C023,155132828.637097,820355084.919369,358036654.598234,142818675.028134 +C024,182067.025807565,793425.760352309,472259.084249592,97469.7983996576 +C025,51665753.315303,330320273.849306,120911230.211985,48863699.0623918 +C026,290270504.603199,1624981444.87807,707769596.002777,282699424.414588 +C027,13465.231191136,2454453.02005059,778655.543580098,364241.708071714 +C028,3795980.73484676,7526722.57699134,7577933.23446375,1045489.94758604 +C029,51024631.332881,227103823.264292,100447343.192145,41002142.8418608 +C030,1658093.35753262,5312762.9481504,6593737.14933014,1004963.96098301 +C031,1442925.45943462,10801762.8778958,11650200.9298595,772302.74049455 +C032,3048496.45865952,18095262.6481102,6488096.55963112,2505521.91766769 +C033,871690.259378738,2566061.72809389,1731790.4342449,600085.617184655 +C034,4227045.76685994,3746846.58900908,3887098.08421489,2932598.53627807 +C035,85068420.3738863,276804490.20956,174554718.514344,82336623.0989073 +C036,2021783.03077262,10272591.715928,3352095.52092199,1340872.20409817 +C037,590870.989560898,5655330.29856603,2349551.17376158,572121.024863596 +C038,2112020.05173081,32368.4060645215,6211116.29676342,3010819.41112325 +C039,150018963.503646,622372274.034583,317434476.120699,139141065.463767 +C040,40344.0787210257,23012.9132954171,40754.3653384815,72326.9278615093 +C041,13241197.2651698,87451214.0136311,39189224.8864096,13780643.0952772 +C042,108091.732423943,428385.398510599,200317.119776663,48396.2376376502 +C043,146189896.840341,692476976.352405,360365038.276377,134945793.249613 +C044,9884994.68024827,55412337.6828766,23407784.2427795,9003813.24587183 +C045,4111070.79111804,26526428.1734409,6501464.83644605,6804967.72802344 +C046,1949142.45271643,12867621.0539167,4923582.39587532,1896166.99014736 +C047,812464.348852524,4503481.66952022,1386336.54303969,940225.737965033 +C048,9199233.70015548,8064177.23498212,8046936.92949284,9139358.42613038 +C049,3081880.39308657,16477970.4191567,7298527.83862049,3486883.05107354 +C050,11497856.5657752,60434245.6440637,27510227.1240658,10645092.8063981 +C051,33095897.2566657,164988926.564564,91653335.4725894,38996533.4531382 +C052,65145775.941217,309134870.703429,114731630.721583,61934791.4599925 +C053,4854860.16922326,22338821.155133,23986781.4229352,14477810.5109307 +C054,1859295.57249428,10820944.9331804,2905107.75618986,902443.72007786 +C055,41914.7323485226,340162.013599905,254898.569221211,39776.1635328245 +C056,19633204.9234124,77861521.4571212,32159221.8687703,21050223.3975686 +C057,1230480.70854194,9433077.25794911,4150129.67451673,1408688.83078779 +C058,4555509.74487756,6252242.046229,4590646.81268525,8842301.69166718 +C059,148950679.156048,0.0159313672530652,1043.87419877033,89076379.9962308 +C060,67927283.273218,329540123.801329,137499480.353297,65936532.1075893 +C061,235569674.559871,1375829128.67991,498867654.023016,219235915.446503 +C062,25763640.4035669,154874616.099022,31013.5875414556,1121589.83200012 +C063,27921030.1958689,120821162.65268,57802879.0713544,26648353.6354235 +C064,423421.480176578,10228775.6084363,486869.471114563,16226217.1779642 +C065,14044486.6563457,18474275.4775734,8893366.24970824,19006850.9723174 +C066,250347.348957151,2002910.81707985,398201.773621324,3293043.26153045 +C067,261217135.00208,1164751076.74348,555494752.766913,237636508.622297 +C068,1341.99972762931,3728935.33346045,5838.46337419638,4685.76708168737 +C069,834159.230119821,6068610.02274738,185172.122454357,1486657.9123308 +C070,11938367.2665246,34360045.4857232,25326933.8393555,7101972.90042822 +C071,13794194.4767365,297993.161176739,24156862.8172507,13258390.8312064 +C072,1058231.68976024,7375397.11195722,2040300.73777111,1062054.22772579 +C073,2753355.28063654,7908385.08793756,4814942.76218424,3869498.26451926 +C074,6900704.19546456,34120451.81739,13154927.696482,6925330.53478353 +C075,1927734.25838358,10776466.4577983,887769.51159922,1183826.5090775 +C076,11285878.0539912,36773126.6210056,31605682.9652592,6527388.4516076 +C077,2218.16899661474,186692.551280758,37033.0518150659,18512.2244448977 +C078,947245.282677012,7950807.94460341,958677.327182852,1607334.5832094 +C079,328970.337878653,3085316.26126201,950650.55064754,2230.8021768836 +C080,677525.481693946,2379882.5618858,486223.500861596,470784.064102462 +C081,16977506.2611472,10956577.4033208,13991943.4997018,20318993.6060792 +C082,66181921.9280646,409181369.411805,162451529.459043,65484311.6690465 +C083,738582.142731573,520297767.517721,238527418.208036,264480.348183304 +C084,118302191.131653,531107685.531043,250529335.257217,111744678.995282 +C085,3333725.59101449,144956738.229497,39274314.7098356,5085506.47212387 +C086,483807117.444171,1597874526.54125,848626471.238556,320478018.137407 +C087,147536.416782641,4621955.09321717,157164.63638156,541827.079209248 +C088,229322.264605312,53543656.6675626,257757.062329353,210935.00441106 +C089,915203.315128971,953246.157984271,905449.352209557,814512.063658318 +C090,11102677.5602547,69734045.9542321,15529585.4661749,10514466.6540927 +C091,712712674.665779,3362191137.3015,1525763092.44777,680783517.412866 +C092,3460199.9075173,388417.990688758,605482.413864984,2618057.87183711 +C093,326282.503606194,1136328.75609405,628113.787383907,110183.857223312 +C094,130092.899716964,476855.092021838,233723.197401787,149906.355964063 +C095,271937.926558153,3186471.15968949,464748.078899774,463935.188457058 +C096,1589759.89870606,5901157.40858636,103051.197620033,1031559.1727086 +C097,186691.117224501,2561231.01686772,273861.318491058,91280.5777751701 +C098,18564258.4805797,11980.2304320909,28987286.5183128,29591643.2784037 +C099,3578233.95496936,79299055.1527006,28893906.4385506,3244773.93167723 +C100,22758192.6170205,145063180.087854,56822621.3900059,23126165.3286106 +C101,463130.570154418,3338234.84457304,916029.362248607,626026.962598358 +C102,35861360.4001001,63603204.5183218,79081712.9327911,34305056.6576563 +C103,1030675.54038764,58834900.9378851,46378524.0979088,23685455.7993924 +C104,2407876.90528549,10441153.4328102,4405136.25319086,1885611.27037033 +C105,40092.0863577722,88717520.5906696,38640619.822788,243672.166577072 +C106,4578198.18507262,26210589.085835,10347943.014916,126643.946611537 +C107,557232.594020045,3084245.84541777,1229558.78519069,429615.023077827 +C108,118028.99079813,1876131.62805209,369803.009035265,133808.949484796 +C109,299356.464288177,2123989.58172741,567355.082653677,253610.98024751 +C110,66696.3898047993,10279673.0356254,133738.428047265,6004707.15354707 +C111,601360.184679797,3688666.50131975,1338400.2279983,528194.326839279 +C112,1041759.81801141,10511809.8812865,9579905.35114307,497083.651789048 +C113,2991373.5382621,7720421.78868929,6061687.39511773,5605168.57532306 +C114,2896604.02583178,2385161.64035682,425610.73683746,1829004.29838858 +C115,11230.3384305535,110654.117945243,26371.0634312752,5483.73366232521 +C116,754154.890004376,3919762.25616191,1763956.40581204,77547.6697186768 +C117,996871.466962179,448619.943170555,4419659.10692123,465725.770091542 +C118,10450761.2277886,8761956.43789138,4455648.17846434,2510821.88887272 +C119,1113076602.85097,4693522411.2768,2360168750.56629,1016066262.92135 +C120,5047406.30970447,5751036.39785806,7451983.23944818,7774735.58065101 +C121,6548.20628852904,2031001.34100263,1719.39971449066,1105870.08035445 +C122,49510.4467343101,3668006.90963489,97649.8482016697,207908.517483463 +C123,4181957.67183641,13848526.7424435,7036816.20744276,4163946.02135347 +C124,24411.6410048277,18452145.7259831,0.00701764420840404,3719555.09666454 +C125,4646544.75383173,15201497.9421707,7540097.8372135,4218767.57564275 +C126,22846298.4439321,18289431.5189156,12225356.7898112,5416034.50686828 +C127,502733.283543964,602560.797767713,546846.66143648,447930.190569083 +C128,4449335.9239666,67966516.056755,6999234.06787106,3909934.20488066 +C129,11365399.4562682,55390611.8515891,24234389.4338252,10754253.1752271 +C130,57604988.6538862,298899959.379984,124603612.880133,56008440.0277521 +C131,2902314.47636538,15947927.9308496,7549789.3973073,1928629.71203184 +C132,790218.121657412,9590481.57410883,7939533.72669867,4418022.88328355 +C133,2373390.99892283,15381244.058881,5985355.94868781,2323370.27559057 +C134,40509.1780440877,1133376.25632211,121518.242109288,69172.7913283344 +C135,198139.554171425,619579.582523787,243169.989087038,158599.762105202 +C136,0.0111331651600244,34764.4696967513,115268.278647678,29.4292982144994 +C137,483056.89625547,1234936.60249748,147836.296396442,54669.6623449063 +C138,19157.4345295245,3493101.82563572,48402.695289474,32311.520619395 +C139,3445248.33071633,4987976.55591843,6146638.47646102,1880498.69993503 +C140,84.0488352424609,81420241.2345236,90251.8041296294,2420.49417957252 +C141,785376.134207897,2379008.33748506,469254.054005716,605563.096233168 +C142,2740685.83908547,47952053.733212,4334366.4032461,10451056.4273765 +C143,13443941.8934006,71295995.7357575,31506814.629678,13024218.1755596 +C144,3849989.02247864,1575416.74912191,1063721.67782484,470209.545585124 +C145,3750532.81632489,7782967.89808867,3028182.1754664,3847902.51274196 +C146,3030098.93510375,2599284.47187159,4167332.90060648,2357231.66596947 +C147,188615.973427983,9759.04004638548,5566.477014291,197974.847411068 +C148,3016027.27444835,2836134.39352203,7284612.98612408,1174631.23427827 +C149,14665751.6616116,44150941.8992392,13847211.9932948,14366101.7324965 +C150,341942.857913936,576712248.119779,522752.78255197,218342.828460851 +C151,8688250.78846653,69747193.5574036,27366031.4964259,4950061.37288898 +C152,55724016.8916397,246868198.670976,119636497.576968,53777326.6602081 +C153,2174495453.02767,9259934402.18539,4527514923.79246,2055290185.41428 +C154,3549728.61135274,8542120.56666387,217903.252937856,2325602.54957126 +C155,8672347.07678705,3705467.58903207,8010995.77691888,8359038.99804365 +C156,627973.805047486,33080919.819028,13275342.5863776,490215.331525813 +C157,401262.684175438,3591127.05449197,3164500.89992018,268778.357137113 +C158,17485307.2610651,39371389.9211207,18196417.9150388,12050233.5310809 +C159,1826833.50942444,84589131.4294495,1445620.85672743,8684939.12053098 +C160,23051690.2905547,87698390.7776987,38776761.6875966,18868755.3450761 +C161,195047.74152569,0.00319873154282078,102.387111730509,138246.387298068 +C162,1233972.11732541,1879013.00407733,881827.612103609,1409160.03932212 +C163,0.0108154979390694,2431950.9465323,3895.81774441167,80713.6049211448 +C164,541053.977785887,1458721.84875427,629044.535463928,544289.493694039 +C165,438856.158379867,143977.321078295,942294.199200771,710614.279083617 +C166,1258267.95043044,3621806.3938712,1636787.69381929,1054003.99018527 +C167,310571.315031604,24434835.6130507,499096.789032345,3375483.0166438 +C168,1022976.72432719,2254893.32968111,229821.762780771,842153.216497277 +C169,9180182.17069938,20200790.1626885,2649080.16389491,657286.046734061 +C170,5600823.1189977,6527241.39041629,5224770.09688511,2017721.58616642 +C171,7246757.56558334,13243918.3434674,7427866.54165811,8323193.18934847 +C172,2614371.79642122,293461.311072506,2194765.92010498,1935256.2033879 +C173,290577.094259326,10672354.0319484,4411735.62809884,222476.291565135 +C174,2792.25896390306,1085015.68295863,168180.301984535,20986.2192258976 +C175,1751708.64686536,1469522.26029832,3900444.00302917,5534232.22160889 +C176,45502.8742710531,228.029962029991,4827.37838032623,740576.071586393 +C177,1059544.70520956,29337784.7187062,689226.181418638,557215.76572958 +C178,4074578.75392541,21517221.4336305,8281796.6517321,764052.083429423 +C179,108081.912362153,93616.3919358371,241610.751065622,188571.275688046 +C180,2152501.81748032,5208.06914589765,3450694.44124641,2544109.45717288 +C181,16890427.7537417,15670768.6980366,17567284.4902918,16077543.4226715 +C182,217327396.512981,33858.810590567,322846.391435303,422390084.213357 +C183,5905930.05610078,284906.615623142,4294547.61289669,4156391.72942469 +C184,234014.11969576,5528190.01126158,9831155.79619908,767525.184299713 +C185,562275.138562073,152505609.448029,574363.253632493,87111.7367303721 +C186,8411425.32349895,32513847.0348212,14474017.5672289,6750780.91955586 +C187,323.897369636457,191763.251714663,1748.3171940012,24758.6705669791 +C188,271795.145333759,3296099.20458153,440397.092226316,465010.934719897 +C189,503171.747333329,4920334.07460094,901976.987333217,411486.750040737 +C190,3461830.31437084,43978565.9626024,3396811.92709032,1826067.81254151 +C191,42287.5188059055,0.0118446218661038,14388.1690894316,28189.0940223675 +C192,321581.351235925,6844869.17428157,2259724.10847871,182237.921828032 +C193,5857943.26518084,787341.522757775,13592701.0576817,5552012.46260552 +C194,242259.022468717,20689479.6345437,19918134.0105788,1223759.04167008 +C195,18854.2445661852,1905136.87515102,148832.363957336,62755.0744049743 +C196,481562.90963727,1252697.70775013,703677.02633835,263788.496692756 +C197,873542.226952976,2160285.41028866,1454394.53486779,1134091.82510815 +C198,1534289.30814801,4103376.8802323,2362068.02963823,1704288.63898949 +C199,1963237.91330464,114639801.25833,50199138.5411078,20332485.7279234 +C200,15421253.3251269,77586803.4745662,37769444.7443421,4422615.21291122 +C201,896332.56483836,16539903.6234061,1627253.68255039,1390913.57627268 +C202,184925.750602232,1300678.71395521,385370.427390518,487546.418224163 +C203,1633406.32066855,11789888.7875973,3698624.39575223,1602606.62000157 +C204,546876.049563326,58469.9421759684,11784.1585187593,492432.034685162 +C205,1021705.23276552,8888802.56808572,2672554.32879976,282689.742119869 +C206,904812.487011889,2434661.61597402,627828.744016529,971482.963574764 +C207,182360.649308771,152114717.356711,1002048.53964039,167404.032719258 +C208,942486.800155914,1963702.78500208,218158.666701495,81839.0603402225 +C209,1383906.86769105,5067952.01004284,2389350.74131393,1081440.41257069 +C210,2959133.90638264,8926664.83966182,6096795.9271909,3469508.18216594 +C211,18993580.6831263,594924.787905035,307665.301585492,440522.134607173 +C212,5859304.58178862,964427.893175893,2544912.57375783,5539658.58396821 +C213,300551.107205758,381266.100173098,321189.604339171,293305.476003188 +C214,12593978.7314447,91763839.5581305,37862276.2989032,11881494.1156069 +C215,2504651.37267374,1081381.92422318,203093.496262689,1784838.06849086 +C216,117320.762208052,3313617.99607708,987837.121148243,51483.0217133488 +C217,63955852.1490843,438201257.407298,146725865.808279,76939209.4425632 +C218,209156.304520648,59616760.8725864,440168.754341586,6338710.86486156 +C219,1420153.63733851,30820.733239141,5956.17289561436,5943.36081854625 +C220,611682.428546217,1073816.56091461,878.877912183816,777414.903365279 +C221,683563.998346451,1114668.61805218,20797018.6693977,607233.897836033 +C222,79264003.2353963,988341.052568241,2852799.64963106,92618372.6320838 +C223,58459734.8320381,2066473.04450301,52256232.537918,44073459.9471183 +C224,14126893.5518968,17871993.4665165,14615054.1481085,16228678.2990159 +C225,1743.2658341684,0.00327996833514479,0.0120922866744233,18031.2898860486 +C226,106995193.764602,437942489.415469,227439988.248494,98460526.9254833 +C227,4822493.44632043,147827481.570539,71852167.6174504,30605090.7640847 +C228,5264790.43972549,12507792.7757515,6103528.34613853,4296450.89394611 +C229,1167050.18636161,4833538.36380123,2081533.60093226,905743.142623782 +C230,339437.236668238,138729.939126172,213888.83030921,323161.389342986 +C231,126402837.651039,575928910.37315,270795270.006231,120962765.731642 +C232,310909.32227665,953348.267302126,397262.038347326,231878.035117009 +C233,4677.42830529046,5623.06689550297,1603.01771557862,25680.4772944513 +C234,1528621.51588539,1680867.23190162,718890.165965974,489667.095369017 +C235,545556.437256642,391430.130529156,16.0421837543213,62346.420574891 +C236,32897.5780106726,564056.946802873,298454.395612309,187972.974187838 +C237,73372.7244991251,2304689.26903825,709752.388317145,416983.917013963 +C238,16512233.6269649,20256049.0046559,7007801.12072752,16273455.0309781 +C239,99769.5322373369,2327947.12475815,311880.110367532,228016.223883075 +C240,520082.307525598,6052629.14859054,979181.406279563,556642.457711128 +C241,317351.677849719,502866.21064294,1705094.62601341,495744.275937456 +C242,382006340.340953,1800712176.32735,788273924.654956,352093269.614743 +C243,61442.642392705,2998666.72343259,183585.898987933,1042518.95710909 +C244,6023.46240070502,2465682.71956463,92679.5682452157,5573.33745576258 +C245,230085.017324834,6239109.04865891,1712061.8523979,1250506.48007411 +C246,3478133.63234352,19821438.3956107,8318821.29754918,3358917.00852101 +C247,8868.36389324443,32590692.2086014,648422.789365782,360837.063156104 +C248,15529290.9673745,114174705.143537,25174413.1583911,10457644.3153443 +C249,17729.4339492866,1271874.72927199,6045581.40662478,8266.82652279288 +C250,651228.37403647,1126697.69974739,4516895.7739066,490107.000205469 +C251,385992.028948942,1878610.09184138,1013117.63938608,373949.904348484 +C252,322380.905435458,1036198.00286611,549767.882797587,0.0153224523331805 +C253,148462.456359817,380049.273979889,16091.172384545,23125.7733502179 +C254,206.180804082453,411575.232216587,296547.239181029,0.00752082744545826 +C255,575617.305262422,2577892.29373052,923000.613658731,454076.126026844 +C256,815346.444612568,411420.122240675,1933178.11805736,766672.712341176 +C257,228495.35112314,672528.136728371,763835.816603277,182919.519268229 +C258,325651.288616578,4154233.66304291,791782.038626175,43576.3497157864 +C259,9056.02111968591,166417.795289842,11351.6164965343,121109.602926583 +C260,1040115.88533803,2474096.29661758,3638499.95498785,1005.89238284925 +C261,3084809.31968254,4688512.77038463,1417296.85067423,3455998.88485944 +C262,892973.739047573,6966112.46903073,2922306.22131644,1941165.88932417 +C263,585550.941989543,1704006.46206654,545675.517375642,48118.9947223241 +C264,24199.4080933023,1535461.87410153,595374.047190564,23755.7184827295 +C265,74668.7769475309,1820137.27354291,695173.561761848,454624.130681883 +C266,676770.009937771,731228.469974997,4618337.34518385,903280.370503172 +C267,4471843.23422599,15210598.3514077,2599819.35472046,56845.4933075745 +C268,2389.04029283303,4230218.99932835,18128.7846958193,2055.97037791828 +C269,1468597.17470087,0.0103188772171913,135299.52018132,2860390.78019149 +C270,23560097.8938789,17883219.5866503,7010537.73729304,22996735.309243 +C271,2778791.81823791,3496463.11446402,3933615.34478269,2881960.00861578 +C272,13985711.2262859,364464.939415849,4969846.41108227,4649170.21498742 +C273,5442770.29521485,0.0149299365911002,1718140.83894757,816975.866324084 +C274,49221.4485268453,4190235.52491328,1970113.14321079,316607.472892914 +C275,485969.556514059,1830339.93582999,8761817.00366738,1636920.4959874 +C276,568.665444873168,677408.720227729,622.521149801921,672399.309963167 +C277,76767.7154607429,532263.022671394,220291.944109525,95546.8522799262 +C278,25537.6480786286,25944433.0666159,116542.964583648,34501.9629414116 +C279,1446175.11745973,7812716.00822115,1258192.3693023,114575.539897098 +C280,2031244.74861587,593045.960132657,3088655.38796674,1794394.08093368 +C281,13461269.7437549,51059243.4809928,18072928.1166108,12902022.9497077 +C282,290693.496517052,716828.10270212,630815.936217045,541913.761704103 +C283,3437773.82699793,61465155.955356,7642246.7065696,8124518.59240053 +C284,534582.68059982,3902642.7481517,1975899.29953137,2017213.0668896 +C285,5608351.02554363,30837611.3153515,15818247.1072258,5438617.42963644 +C286,761238.645035325,3636413.22389289,722351.522590502,8411.65214426892 +C287,497985.452903025,1788150.94387386,998741.892404659,1133866.04998133 +C288,2947685.43524483,38815357.096752,19463768.2392475,9466983.87113184 +C289,2288418.81705397,13552968.540939,6261684.94509195,2093817.21300474 +C290,5782791.74034467,243099634.073863,5036044.90941516,2480616.8113575 +C291,3687793.57034902,14842.9622954739,3665951.05116356,4203196.34581652 +C292,26171165.5213283,488.332348488639,0.00848780912890274,3491104.92122449 +C293,2282311.65125131,629758.958418007,2424204.32338483,884728.465231972 +C294,1259410.1989935,23146114.243929,7702948.32361425,1502005.3765825 +C295,151481108.052427,5432419.88982401,5642643.01412956,154692866.645442 +C296,3950083.06988693,421439.662489653,4573697.0230049,1828105.11266079 +C297,6469219.71045713,37100.0505585639,463924.742895393,2202591.83966706 +C298,276180.101436867,320.067987420941,969419.629335128,9563.30674581909 +C299,1733947.33619362,670785.090287534,517476.775029863,1031869.81165767 +C300,4588174.45399222,14812543.4681289,3133608.66857453,1417706.31152291 +C301,6644877.20517044,11391924.7205915,7393916.75205192,4466240.91507423 +C302,63.8607366977451,0.0148971125278045,4386.00567040759,1426694.87067076 +C303,1051229.32090468,11330604.8754687,3090792.07175685,4306612.54862986 +C304,2946441.46660598,0.00915477917835739,399517.558425432,1658919.57791993 +C305,1056985.26579089,284974.976931113,654166.64728146,1687580.9479661 +C306,884203.181739414,382340.198246364,143097.702270448,461235.563188409 +C307,4175100.67870651,4894749.23144925,2502661.48338763,357805.273680698 +C308,372772.74375094,1515145.61570412,983086.420067171,910020.289784198 +C309,170615.189737496,1781343.88962949,244560.91782249,11505.4842830068 +C310,5818.16939816182,231102.057702587,119354.126973821,32255.6852793326 +C311,1447558.2800632,80393.5896216234,1514109.08535618,580170.761088234 +C312,420386.425405292,9547476.40538577,1174311.92595843,373087.548513022 +C313,27727.8286903739,971.07420456153,64234.1417116083,100208.576574201 +C314,151772.171026653,4547222.10935812,1806366.26008597,124597.427648006 +C315,2163391.32824076,6951459.05885795,1376381.99607008,526676.577806464 +C316,7704.2811540077,14455.2111127725,0.0110752974526956,12550.7033179171 +C317,64879.2903455283,111950647.572545,47926825.0626325,11150966.6014204 +C318,488974.089787024,155620.244746136,173814.949433281,616103.945738172 +C319,2221940.65677923,6980496.01478687,2980566.39035032,21.8245185636371 +C320,1640.76484925494,36239.3062169117,454.918036376575,0.00283854896987708 +C321,9183089.97543003,42342388.1753587,19228637.4305057,6157700.0096637 +C322,6859071.00582542,50869835.348415,13609427.2083146,127918.761764643 +C323,3906661.83809472,23102123.2820177,8568840.85819989,4621096.79612177 +C324,628726.430444545,3181630.37038517,45120.7831148333,303275.998981712 +C325,95964.141769456,1847849.22175771,2240601.99839476,904.783221244087 +C326,7405676.91914549,17998894.9040026,15485191.7683257,6660691.98494958 +C327,274116.657570308,1426892.29995696,391665.861338752,9620845.0115358 +C328,6569226.0240076,23387733.0856957,11837605.8112398,5428924.48702106 +C329,16075968.2427662,90026657.3664327,40383122.1100208,4413657.27277136 +C330,1764457.52043571,34427530.6211052,15681567.8670415,2955829.9307331 +C331,253602.616541277,12974879.6277674,1798251.28903921,524633.109660785 +C332,101072.706284193,86172.3892931215,926960.260500765,4547.57139822252 +C333,9606.55614806446,3959088.34367097,39797.7899372993,11150.1936434663 +C334,1222411.71193817,4585595.18608094,1729106.27908977,1512177.29248892 +C335,2384610.73518187,15132648.873995,5157509.57391041,2073002.02843836 +C336,25148.3201003233,246999.880342694,166630.042008029,313750.281196147 +C337,903443.654638669,15114.9509713356,1376937.23135037,670672.291616579 +C338,105.010562519628,961640.813173579,23766449.4819823,115.865131498497 +C339,11578.5239552872,1481.04334683633,573.145124718747,136310.668743496 +C340,136459.916613137,421941.837172232,154228.058245713,303269.293057967 +C341,66663.6759254646,2607593.43121315,289375.096506877,145954.515293822 +C342,7021.13746265546,4664.95321768653,5931851.71252161,17201.243452168 +C343,110185.937576999,36139.1480115457,29638.6751223102,13788.3971492167 +C344,493.302642524683,1532840.27161749,58508.2800242186,51022.7021944157 +C345,2662.172351103,283319.12005685,94907.8202653869,4634.04900434011 +C346,12422.6657846775,47014.516560329,10304.4187150261,116582.789095542 +C347,1422328.79421627,7196519.945028,6434564.29185172,1503920.9045327 +C348,339340.66381285,828875.749613007,354376.955755628,739752.154939756 +C349,883.639064153154,8793900.60230002,3092916.77045527,991696.061133725 +C350,7098.01274124412,111429.67632826,5745.37220712194,1499.16143600155 +C351,5588.22696314719,64038.1492149275,15734.9412254636,36745.8624876071 +C352,930735.559733319,7521455.20098675,3954712.43690415,990903.706071721 +C353,5956083.58499448,3860040.07014099,352093.950420705,189673.987837624 +C354,12660.7246193333,34847.7320560216,22411.1174153333,13743.9109290198 +C355,3342217.13945588,3015216.29290816,109015.799298345,4366408.8190496 +C356,6886789.20597145,9509560.6285636,9761297.40053521,3500231.07890694 +C357,2181752.86391465,1805602.15346695,719072.542152669,1089968.63098998 +C358,78264.3473730343,2503562.7347712,0.0102037538890742,210171.269951444 +C359,9029538.94235098,67120838.6017803,10493660.8427992,4306094.00903468 +C360,8445835.72826418,8934793.49950574,7559036.68324364,2253243.4510278 +C361,6977130.9174852,5129363.48725658,2598340.61155769,3700777.61036647 +C362,2534961.96689683,3322661.05561522,5689871.5387791,6785083.36964395 +C363,16986417.7955999,14582209.1466632,8701942.76249276,2067022.21583253 +C364,2698684.56180752,800663.250755631,0.00694491340623789,268613.069162716 +C365,3385484.47546138,1253494.99573002,1293725.11322391,2273670.32360079 +C366,19473004.1508845,110203.218978722,521612.61504134,9574178.85060188 +C367,12704.8265726466,14525.2785166129,2376522.07499105,493143.610588921 +C368,1537093.4257716,9538135.64946994,3573133.8415361,1445342.59328085 +C369,64620.2630721765,3016495.29500811,1541461.36269271,3868.76342208967 +C370,30540.6002058533,6177168.6526351,80673736.5263502,1622.40272493885 +C371,262420.610097622,6155801.55963764,2044970.90715309,170515.890858786 +C372,539447.342238581,134553.522416043,608776.053708024,538931.381265974 +C373,176406.216786663,2596121.29072829,724578.923496637,267457.751383005 +C374,920099.326133911,31779817.639552,19219756.0478419,782600.792863486 +C375,4940117.01485037,81125131.8272938,13966195.832088,7443740.39608903 +C376,20243.6836240237,642513.940058051,46469.8136392532,18364.8669022492 +C377,111413.180173925,2659921.06228522,928548.88166271,195309.537384441 +C378,555769.311268535,5665239.77622009,284119.139109104,218886.296225334 +C379,284043.883096065,3462990.24828796,909314.791778986,302008.661837257 +C380,1456028.70646781,4244581.05156274,4162443.57060363,999965.601444268 +C381,309114.360579141,341874.608171003,20600.0504237061,80081.674343991 +C382,5744386.91385449,2611571.01256943,2215314.50995976,5089354.01565439 +C383,4450310.40879179,28559510.4841349,16870863.4194609,4254539.05555345 +C384,576175.130078998,6280149.85675919,2788781.8757926,439093.077361131 +C385,705728.392854128,3559.02674337029,0.00867627649644164,199045.488636943 +C386,480710.115090167,34341.5421899676,571635.535323763,1677703.88587425 +C387,4232022.11918736,7748183.89752959,5754493.31818105,3529729.47429516 +C388,9266.44764273706,246809.293292798,267792.701799173,19995.4310675012 +C389,231207.779118298,311405.964904547,286569.473726455,191007.948863101 +C390,2571026.01450707,104593.781278572,139408.826831074,2529190.88453007 +C391,5409431.4297708,11281.8910168448,8204147.13179097,8749904.72723586 +C392,223678.464378008,243000.395815614,318363.329866857,3150292.67028878 +C393,0.00411792519753698,0.00725815674588114,0.00299976313968703,0.00652755893761705 +C394,43981.4169744796,24279.5509938446,24795.6995917878,21719131.3344485 +C395,754346.362155919,780840.683276417,849873.668240429,5280682.93499213 +C396,514072.704893423,1411269.14000275,627066.362349972,1002352.31562042 +C397,5381378.00057095,0.00807414364010007,4813452.36066053,3276188.67522341 +C398,951304.643238424,16840.8578655401,0.0161652932002596,3180110.3194703 +C399,309137.664063453,1479367.43427891,5981311.50898063,3113991.96430523 +C400,1132715.28739131,2581078.79822165,1486758.17988555,9023150.9988284 +C401,1961229.14232799,929991.380165461,4556115.37385527,1947487.40509419 +C402,2483423.64805766,883176.716707599,2853895.8704002,2478985.36651481 +C403,1931605.21481455,1563079.01291184,2343424.9110782,2538031.20633869 +C404,846332.650245446,29658767.192077,9824321.07281836,1806286.38595303 +C405,314288.778692817,20723556.9532527,6736119.01530968,291822.254307166 +C406,7664880.08998382,7094623.03714775,8403122.63527254,7257589.98679289 +C407,83424.0753499424,382282.177338669,9268.94831679799,94036.0550240787 +C408,0.0101247147822124,5282232.7203879,5835894.5400192,2977640.5951662 +C409,90566.8491529097,60749.7589678632,59610.6529133515,251338.844854545 +C410,328139.80715102,5178789.49433894,37951.7477664324,602932.009276779 +C411,1802416.26717434,47219.1165159631,5292.74886502728,1913425.2998258 +C412,69952.6335400787,1114672.59280214,302137.996137152,69198.3041904812 +C413,204761.984854815,2433235.13340979,822492.97928012,0.00974481781691947 +C414,1387.09533766183,38277.1635982362,16581.1052183132,23618.5550868776 +C415,293805.006141576,17276.3355954401,407596.585304146,1630511.62203468 +C416,7240.48986797616,150492.024967655,4398079.3768693,617712.68793954 +C417,1716587.51477248,3833678.98459376,14376492.9711392,3015499.75812468 +C418,1622398.12352864,1916735.24505619,3012579.00626637,1481958.91965975 +C419,17088210.6231422,22352455.323768,14747498.9531455,16305404.7520503 +C420,116195.426197754,131580.118540114,19387.1457451341,117676.784220341 +C421,1155.20286817682,0.0149218799331437,0.00769233288807443,15158.2493340465 +C422,43717.0733245397,50999.3831521321,31224.7826388115,31610.6619262839 +C423,55303.4187854015,10348.7092768905,9736.47488257852,45119.7992690862 +C424,0.0114921308656547,1097643.28304452,736702.988955243,777113.173003565 +C425,25740.6089569733,580890.904405749,70.2850711428513,1941209.73945644 +C426,739809.353373507,4137698.92225748,1565354.9725031,671672.540725094 +C427,348088.869208975,5669589.58556933,4807876.20478408,986921.317804086 +C428,1033505.72245332,7119170.66463439,10275209.7009341,841831.93653871 +C429,146796.312441255,5037859.49560401,2084807.27585956,215609.295197564 +C430,1722.96537547852,34688811.4299725,16988469.2284285,7767814.14905527 +C431,171595.423578954,2511311.43364002,597547.576653739,133998.059936266 +C432,127430.100241454,1226630.78395678,903577.233765877,234015.054387905 +C433,292.650801839239,6662957.57796136,248397.247081708,325179.574024819 +C434,120655.245978826,2670005.12127846,543699.244758566,221213.06993656 +C435,2425065.53512332,5189668.63786836,2532119.65890133,740244.197116739 +C436,9855264.88613118,44490212.2780493,20484478.7020338,594042.367814541 +C437,4134790.45126542,16006504.2204706,7760457.23737772,4208794.53547082 +C438,109184.963045431,9851829.83534822,5858369.47579471,146947.372596601 +C439,0.0170171070900788,6154276.08979257,2362160.45934533,72909.8429068374 +C440,338728.551810381,724865.026005163,281182.554899589,89367.8149904348 +C441,338203.834640358,226871.575274853,583530.98750621,18959.4302201426 +C442,3129166.74246599,31907991.2851035,15837287.9030624,4914397.09336327 +C443,0.0171842463200024,0.00788356389789084,1132.24998239736,753.291926412794 +C444,62091.7035380203,2757997.77459536,116059.173755972,52852.5451151726 +C445,98.6094355205709,2668717.06352553,1413712.60526464,86.9458848446824 +C446,0.0183358726535607,22747118.627093,0.00515224781997399,0.0141136145724683 +C447,18390659.5512,442.486310803198,184.522989864778,738863.885839682 +C448,301816.416971501,211204.546888588,5586.29524619337,0.0127925821376226 +C449,296647.101503752,72136.5202222399,92597.2969402715,53545.1728564952 +C450,7652.7265746607,831210.781004945,537884.715302559,7386.57221059703 +C451,921.564685172038,1662489.21035072,2567.26076426049,1859.97464305339 +C452,0.00946571238984852,415692.009499877,1156.32168242142,9278.02042037057 +C453,85559.1303040724,803417.460202856,211861.47020162,114632.790975342 +C454,185291.765703606,710960.911253002,437474.883739891,86269.8893299248 +C455,13412.5924252775,137846.386360512,93980.9152741996,7957.08506081899 +C456,0.0108948739916131,19501.2142842547,24487.0196634392,48333.6711189566 +C457,393302.811403958,83231069.1099384,562577.987551603,16069937.0525636 +C458,830123.45620998,2773203.46484573,1164649.35553094,820669.440543272 +C459,70977.7423280718,528966.38548573,16594.41650891,70085.1785431085 +C460,1924.360407878,1103640.28484984,9660.08880855734,1877.91729686657 +C461,36386.0350016435,2201159.23524703,247979.433276592,14881.2691085486 +C462,4703.43497855968,44219.0125843379,15967.6747320217,3429.6289105197 +C463,22040.663252523,218747.287985616,35066.4440622686,14167.5855206883 +C464,683756.466820886,1758964.59419704,104331.071769287,1571592.86186083 +C465,17180215.5557976,1057565.45145327,8098348.06339169,10217900.6673586 +C466,273931.742939355,0.00713912523643204,315396.820597773,573973.629868142 +C467,50474.6306395437,1162720.59813481,4827932.65106743,977833.266311812 +C468,1422789.26931052,4465314.16559809,0.003753423179457,922561.553574222 +C469,3655056.92152512,25245175.8519955,13920689.2816188,2841063.43744049 +C470,13172567.1855857,163220363.745354,76395850.6823647,28638930.6754039 +C471,94054.4457630575,6977254.45321083,795023.928404592,0.0107056900429165 +C472,5012129.9058413,1389732.58837474,3296240.7048559,2229705.92978586 +C473,1714791.54263887,39053.1846049759,4546664.14030197,1719775.47073807 +C474,1891554.49769864,776567.354683446,1378612.78327341,2517881.88690881 +C475,536348.229080638,1133174.05666174,430263.053233284,1585470.02068875 +C476,21649169.2161237,38711.3413476261,6088017.41451091,19914795.0583065 +C477,1526363.64382995,117811.636508621,102881.714461817,12252417.195312 +C478,855880.996386972,0.0179820613967146,1641382.22134477,2286402.13342772 +C479,2517985.66601421,1756159.65191065,20406317.4527436,6698874.03924661 +C480,10396730.8880831,6908982.05824332,23192609.1690964,9036211.31242879 +C481,2416788.04695841,2713538.61045483,2253671.30518407,1912510.97842165 +C482,0.00628904765902335,0.0127208133492931,0.0100922834419682,982659.962308336 +C483,228034.808603223,56146848.6880878,177391.033007516,6619.85640512975 +C484,0.00450368057594451,34791.5998114844,280.885785618819,0.0139366579291616 +C485,1139151.29974106,10180146.1020011,3489106.80420904,64358738.1305637 +C486,83011.6299349853,17274337.9939077,7102078.6859213,113365.135042023 +C487,1953435.0529799,0.00559676909328827,0.00600274868131781,1977888.6599798 +C488,59304.436939788,12944.0640590408,14615555.4231102,430616.688705729 +C489,201710.607042464,13155181.6967193,93180.4649916369,167283.208475772 +C490,389756.366110231,0.016661797729709,0.0118491746741073,444400.680396733 +C491,928418.661240117,767885.884546573,1147984.64274679,707989.18232285 +C492,0.00785350124969872,756.70018410437,19957.9059834061,27666.0123867947 +C493,11034472.0217853,45131191.0396537,23715258.4534024,9991324.60741749 +C494,628339.011410192,32201.8664972543,1388099.13347536,764637.648334982 +C495,1261155.03774252,458117.067921012,1002902.06157425,2088158.18356775 +C496,2128158.06414101,10285621.3099959,4270566.30098191,78770.8322761123 +C497,394306.836398124,6087991.38587337,446708.650319146,2082518.26473544 +C498,88153.0493679547,105480.734911024,84448.222995189,34258.4530469157 +C499,3942650.54838417,22829.8025461867,67316.6259557471,15280.7730654679 +C500,85765.0174918166,271326.570639637,239943.231112466,0.00405847282773215 +C501,53320.7092231745,2997185.61949862,0.0111162205211857,49589.8617575974 +C502,3320523.15338246,1065998.60109479,7990052.10653691,1711126.71254197 +C503,697809.63825616,0.00710031371857684,0.00836197748540467,1257237.43003342 +C504,290404.280766165,2696769.45175367,716930.121624002,386997.860250197 +C505,988636.562360837,1020437.25723522,8115.77587323695,1109372.81141943 +C506,0.0043295795620076,8591094.39971421,3715299.9671272,0.0137587619076905 +C507,15747123.090474,7747151.48064738,32342798.2887944,15973653.4679252 +C508,169000.60036915,0.0112349567559677,16175.920891132,226933.450688867 +C509,233845.743174915,8298771.75967832,530427.306244029,31283.5217697093 +C510,896053919.669946,4568352370.44954,2099150003.34383,824135794.114673 +C511,1461302.56306807,19090196.5825281,735427.88293855,691012.012900534 +C512,33137609.1451455,42446403.246814,855523.829739322,264057.906375096 +C513,98220.7007331728,1045746.94979595,248760.163771716,1664069.98793654 +C514,172017513.379015,87.3680581493814,157.264476114252,110735571.441153 +C515,600338.726280924,339818.343781772,240662.73251962,1150603.99776454 +C516,897308.543966585,3415038.9427137,479000.335401586,1444459.76386749 +C517,2474816.72319843,555150.226903633,24481605.9474883,2194037.33431299 +C518,182275.161814438,24945201.1336352,37029040.8568995,8368685.17321672 +C519,5625928.0056828,21479.9628999218,27999.3948616666,13531057.8420201 +C520,1449754.3438816,0.0136017687085483,0.0131329046802313,890926.256730487 +C521,1083586.11879965,11565289.7822254,124459.994936748,1438737.34642251 +C522,3527923.06369355,1396312.80771751,5837807.31953024,3715660.17727193 +C523,74082948.0791028,71925184.536222,65253195.7427914,67789189.3974815 +C524,7411841.44681003,19424711.2667674,11649945.9760286,8452080.27314368 +C525,7689296.841675,712321.552068963,9074086.11560141,9828019.78708899 +C526,57076327.3120091,0.0126582521914227,3335971.2276263,23531430.7246111 +C527,1414607.84060915,1116365.93296278,0.00720903519402937,0.0124609842838552 +C528,2712730.30128557,8605.63700653353,0.00607344718465822,1458821.34314086 +C529,5726665.70350969,57970.0787190707,13114082.9133165,8244703.26748953 +C530,4300120.0026913,5387736.20797144,7152674.29302699,2543186.65829035 +C531,5608694.16284037,5710948.37220943,5659901.65251401,5317539.99479643 +C532,2250594.62776818,2236656.61166023,2636305.86406478,2113081.71935925 +C533,2549729.11229814,2606851.05667275,2919439.45149265,2571393.75825643 +C534,2780700.22800177,649688.003719791,622480.727701675,10152218.1690847 +C535,8144464.87668467,1149095.06571648,762725.118603661,1244509.88053719 +C536,66595.2250468833,168982.980418997,188469.446704652,1145830.80179891 +C537,10669087.9907128,4736176.48234043,8042189.8152621,6506798.22213045 +C538,1872110.92229452,12356055.1092834,2119794.19433848,1844919.43240557 +C539,6084048.31204968,1892450.54749304,1556910.38698278,2575204.76808008 +C540,966309.603356879,0.0155745598966918,3767249.8643096,4536937.00972879 +C541,698266.417806423,4987240.148617,184144.595300807,373912.144771796 +C542,3897580.02150978,361271.705664367,113831.058695102,4118849.31580654 +C543,5987.76127315355,0.0152682797982552,0.0144454895071765,3863.13370135995 +C544,4376952.27520841,2537557.05695585,25926784.057424,43558.5911688863 +C545,5468334.97415803,35541183.2881418,6066982.27577897,5178941.41747399 +C546,182068.737325173,656439.490949091,315470.994305162,352140.68503273 +C547,1970574.55689444,1515.10412116568,0.0107633818152676,0.0112164300211987 +C548,1435034.90372758,39970.1210018646,895450.3386377,5382164.12831992 +C549,0.0115055434263926,174386.745194573,277798.317809798,190.868549430664 +C550,1798700.17562891,4794085.5237258,3329984.55471451,1496998.06567594 +C551,551549631.544996,2481949399.25045,1177411743.07182,541692108.899706 +C552,1595763.4562952,101146.4920849,808468.458077121,7745736.85191569 +C553,2627600.33920993,21944.5421874534,18874.1797433246,14158.9243549319 +C554,229678.513351457,225441.978776167,247954.74247295,3850494.91727097 +C555,2827216.16307309,2278139.0956473,2633384.93183803,2832936.4866278 +C556,4469473.3076635,2565443.12551014,1670785.69052627,4429666.71199149 +C557,238257.914155112,625758.280392365,1170420.13215031,103739.583704496 +C558,371235.763864977,9031241.76137895,831364.482015203,540167.020120185 +C559,9119430.1596411,47550309.2585911,14683538.4903905,8698462.01920687 +C560,1091000.37305996,4112249.72973186,2842358.87028259,4866413.0043457 +C561,89096.7328007408,905641.76396665,109726.349852647,115950.741466197 +C562,201236.479307758,167156.576821722,166444.526768838,123908.540155985 +C563,5816481.41064036,5688.2880856297,241956.95355927,1001071.1833884 +C564,30.2447498905032,14645215.2853418,1954.91640035527,0.0176633591477418 +C565,0.00833722146994464,230701.925421238,8297.91725200818,13775.6565591132 +C566,927726.798356154,3369832.99817258,4529537.47673101,2388558.45498348 +C567,4032433.65405726,7790341.23688833,2783042.16635534,4166381.57763083 +C568,0.347317300466469,39360.1414615855,0.0141972202010656,9.67379101341165 +C569,1135495.21782715,2426345.01759181,1200826.6053118,326040.923548175 +C570,0.00608409014890559,0.0036338841381608,0.0136210490325597,0.0176314903023473 +C571,71436.6462632807,813685.643124361,85909.9392822997,86670.9666891879 +C572,2091.69563590059,3028929.69283097,15533.0276913163,2414.65444276073 +C573,2323.22814739485,109154.947659968,902990.623072808,3399.22831684019 +C574,1965814.22184248,2246543.4492402,2314390.37167766,469570.200488901 +C575,376916.673264154,3816094.14744556,761451.103941285,974539.93322325 +C576,342986.446241144,3662178.43803744,2664707.99313105,168.14895442343 +C577,1464.05909364028,0.0133913212222102,1568589.64903521,833095.920203403 +C578,1358369.73618375,4112364.78658431,1463595.59454612,196752.482255395 +C579,596422.229357503,4189182.24263661,2199685.61681256,590861.444495202 +C580,37.1372513513155,801195.427392262,67121.0645062233,0.00924341321386428 +C581,408781.91249052,125347.34245257,16977.1461763774,0.0116975008443525 +C582,3976.03251690558,1128267.20435541,388410.187507038,782.733344977055 +C583,135018.554797696,2000795.85460405,394095.293835331,1127160.74231665 +C584,773259.024113778,729684.062315986,2258887.74359207,556049.724747908 +C585,3470398.55848423,0.00577431280874189,4151581.89533147,1801535.52026905 +C586,7141138.88483777,46438942.348136,23388427.4040984,4577963.27502923 +C587,8961216.73459125,46838184.5395549,25625351.5512924,8362349.55273373 +C588,6979421.0561199,128482669.689223,77707674.9179738,52280160.4473419 +C589,99210.0023036158,647744.439861035,349192.590380514,1813496.90558744 +C590,452829.752661981,522695.076597765,520703.681256633,423988.775235223 +C591,1541743.0012677,797161.004301416,976475.693377083,433967.228391634 +C592,374498.847255458,370015.86932689,408514.199082864,357566.142284292 +C593,1336978.20454153,1322147.89967722,1340309.36450323,1206512.50241809 +C594,2653282.19642745,4652830.86653202,596772.714554914,1112.44632497958 +C595,505033.553692387,21860636.985826,1594414.67027784,177311.227996761 +C596,10500.5481843826,24166644.6783688,42327.6271542218,34739.5900041506 +C597,441910.295077089,5959437.83690973,2891520.56213157,4219932.62460685 +C598,0.00256798599038242,0.00883625975734525,0.0106562182104529,0.00501090115624745 +C599,0.00842157183340179,1928841.16119261,109272.974018998,0.00953089440301218 +C600,414204.773167765,723148.271445539,877747.289916854,644419.450584417 +C601,0.00685091579587955,747348.822368827,3727303.94505017,2314122.74945922 +C602,317463.37283014,173332.933128695,106818.589677581,9212.99289927667 +C603,83633.5917911434,551187.234292817,88969.2404134988,27527.6984243798 +C604,303189.472229889,408521.544074149,264316.000772787,492330.815870075 +C605,1537591.19377738,89676.0520481272,0.0127557971806593,1628403.52999501 +C606,114749.888569542,373667.067168978,1.23832818246129,563.748695918106 +C607,0.008202825958083,3088602.21988255,535887.06819015,0.00929099675551123 +C608,0.00310834696615588,0.0113704234779789,679223.610190532,877406.932127669 +C609,765690.056804119,7125712.60563122,3394934.21705277,1110762.43447565 +C610,498179.527999298,7041441.01852592,4500016.58176827,2427855.2653551 +C611,7358776.92155487,46222691.7575764,2006914.59209602,876909.439163468 +C612,1089550.78824091,5577325.76619777,904997.917863327,381168.83661451 +C613,0.00859504827143523,0.00899415135752134,134676.606440205,5542.68411485256 +C614,26330137.8989707,198122735.969041,71383367.7480536,28147562.2542536 +C615,5143652.57234382,18488468.3606988,3923749.15139416,2229297.23676306 +C616,480622.292960615,17623662.8006343,48966.4445819753,6467.08775163789 +C617,1298449.77174115,0.0125000308256034,96689.649980624,897184.165782133 +C618,4466068.98454919,152790.798424755,230227.086298611,1863377.34620147 +C619,26456142.0311162,184836874.348603,56911738.2524085,26119392.9634939 +C620,2049632.67125668,7208736.57828439,7843283.79258307,735646.534092135 +C621,393231.876306677,81089.9013738394,0.00692973115690143,408521.163626125 +C622,35675.8866513674,36477664.7599655,16719604.91156,3891791.57218869 +C623,1067861.88002183,6375656.23797235,2001353.65765582,1380.85477347869 +C624,67896.646998957,87502.6842455358,1405050.87394603,5196111.4474088 +C625,6637.61844418122,87936.0010013923,0.0140188703587921,2836.64833045957 +C626,102067.9454494,31621.7113938845,211691.834532684,404487.41587832 +C627,621566.680069895,3798122.24720507,1720889.23237219,74973.4653809846 +C628,265125.904193438,1122565.17122717,656784.489454199,177574.97096524 +C629,14261.8202163989,71577.7407262114,53970.8868339356,5275.49351629141 +C630,22246.5817095109,2449.19621189967,0.0068191825838601,16610.6488991853 +C631,269473.81998055,127059.505271305,31096.2717352708,11224.5295069932 +C632,474711.443028894,3073019.83040519,767943.357527715,267347.407273473 +C633,142790.284112631,928100.306089812,445252.906017197,22698.0757718206 +C634,4625168.50162766,0.0104882335266358,0.0105512955989765,1267482.39120351 +C635,4552635.37995212,253134.952375646,284085.184616403,5522946.35096282 +C636,597907.714611748,41017.6431455669,19935.0944261572,555372.069691882 +C637,1039.23254182595,6248.6997838017,1109247.14552309,31628.3654102266 +C638,172123.569212938,1101851.90366746,786383.052783115,300754.643151411 +C639,4314.02993525134,1802615.90748979,561347.984199292,2754.82998501558 +C640,156691.589045981,118010.779866013,4683.59926705131,172667.095122799 +C641,0.0146710953667959,2600707.23949274,8838.25686717221,9086.20377636995 +C642,1253232.10487781,2.61965361796999,2.36048294028399,41126.3760956029 +C643,0.0122796289944642,7206245.58378624,743270.022572483,0.00587135248791983 +C644,374365.423847768,1642721.50462445,781299.228562438,421981.632413429 +C645,0.00889742712109075,765190.097195597,116951.13659933,43463.4710097403 +C646,16887.1519433172,125064.558334736,54629.3216497533,240.672222189225 +C647,0.0144411652221299,116.982625155648,23406.9696023289,10261.2839914196 +C648,1744.5829770907,42420.1653395394,10181.3140001696,1491.79293696951 +C649,165470.200051827,2705040.44271246,629797.541733396,87866.4390998445 +C650,200370.98193111,1488411.38775004,565381.393146601,458847.478602867 +C651,5969681.55379134,16511416.8066198,14775576.9239009,5518874.10300539 +C652,389586.933850814,3888542.30701777,3107248.43229514,293695.511931958 +C653,3361.15789655922,661929.054561074,7386.97183817026,17994.0218138932 +C654,3028.71802717009,2584881.57319534,34785.6692627107,263804.197608796 +C655,2818.50172948531,3037040.09465542,978.930757198066,153.481498169151 +C656,162.887750335302,2857154.6225485,807.215678613639,209.708941218493 +C657,260544.199476954,1480225.29895945,847641.364814322,523111.394330861 +C658,221053.402057452,5661.6408034625,70705.818318497,3060.67422395952 +C659,216263.339636225,2312077.52648562,10371845.7082411,35584.3482039653 +C660,1291431.64548607,35782754.9330197,1537505.46603347,4769980.27132575 +C661,10276608.7453963,75657096.7816655,27896024.2998661,10538446.7763811 +C662,436734.987711774,20437.7527749732,2224790.4379144,647279.594154766 +C663,24885.3796367772,4031535.74058063,0.00623072831768732,0.00662055227907849 +C664,9540.38640101986,116306.016063776,33775.5608281023,10329.6871159259 +C665,171132.393589018,536751.743920658,1028.16828967176,11976.8535063089 +C666,0.0122522399683024,12736191.1245182,0.00575863052270972,0.00778989413667249