Commit 0a044d42 authored by Eric Duminil's avatar Eric Duminil
Browse files

Port SimStadt library code from old/ into src/simstadtpy/



Add results.py (KPI, SimStadtResults ABC + HeatDemand/PV/GreenWater subclasses),
runner.py (workflow execution), workflows.py (high-level simulation helpers),
and utils.py. Add pytest-based test suite (46 tests, all passing).

Co-Authored-By: default avatarClaude Sonnet 4.6 <noreply@anthropic.com>
parent 1bd8aad3
import logging
logging.basicConfig(
level=logging.INFO,
format='%(levelname)s: %(message)s'
)
from pathlib import Path
import logging
import re
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('agg')
log = logging.getLogger(__name__)
RAIN_L = "Sum rain [L]"
RUNOFF_L = "Sum runoff [L]"
ETC_L = "Sum ETc [L]"
SINGLE_TREE_ETC_L = "Single tree ETc [L]"
SINGLE_TREE_MISSING_WATER_L = "Single tree missing water [L]"
SINGLE_TREE_MISSING_WATER_MM = "Single tree missing water [mm]"
RAIN_MM = "Average rain [mm]"
RUNOFF_MM = "Average runoff [mm]"
ET0_MM = "et0 [mm]"
ETC_MM = "Average ETc [mm]"
# NOTE: This code isn't used anywhere, it was just a proposal for diagrams
def parse_green_water_results(csv_path: str |Path, year: int = 2005) -> pd.DataFrame:
times = pd.date_range(start=f'{year}-01-01 00:00', freq='1h', periods=8760)
df = pd.read_csv(csv_path,
sep=';',
header=0,
skiprows=list(range(9)) + list(range(10, 14)),
)
df = df.rename(columns={"#": "time",
"Sum rain over trees [L]": RAIN_L,
"Missing water [L]": SINGLE_TREE_MISSING_WATER_L,
"ETc [L]": SINGLE_TREE_ETC_L
})
with open(csv_path, encoding='utf-8') as csv:
for _ in range(5):
line = next(csv)
tree_area_header = re.split('[;,]', line.strip())
tree_area = float(tree_area_header[1])
for _ in range(6):
line = next(csv)
species = re.split(';+', line)[1]
line = next(csv)
single_tree_area = float(re.split('[;,]+', line)[1])
log.info('Total tree area : %g m²', tree_area)
log.info('Largest tree (%s): %g m²', species, single_tree_area)
sum_columns = [col for col in df if 'Sum' in col]
for sum_column in sum_columns:
new_column = sum_column.replace('Sum', 'Average').replace('[L]', '[mm]')
column_idx = list(df).index(sum_column)
df.insert(loc=column_idx + 1, column=new_column, value= df[sum_column] / tree_area)
single_tree_columns = [col for col in df if 'Single tree' in col]
df[SINGLE_TREE_MISSING_WATER_L] = -df[SINGLE_TREE_MISSING_WATER_L]
for single_tree_column in single_tree_columns:
new_column = single_tree_column.replace('[L]', '[mm]')
column_idx = list(df).index(single_tree_column)
df.insert(loc=column_idx + 1, column=new_column, value= df[single_tree_column] / single_tree_area)
df = df.set_index(times)
df = df.drop(columns=['time'])
return df
def plot_greenwater(csv_path, description, output_dir=Path('output')):
df = parse_green_water_results(csv_path)
df['net_rain_sum'] = (df[RAIN_MM]-df[RUNOFF_MM]).cumsum()
ax = (df[[SINGLE_TREE_MISSING_WATER_MM, RAIN_MM, RUNOFF_MM]]).plot(grid=True)
title = f"Missing Water\n{description}"
plt.title(title)
ax.set_ylabel("[mm]")
png_path1 = output_dir / f"missing_water_{description}.png"
plt.savefig(png_path1, bbox_inches='tight')
plt.close()
ax = (df[[SINGLE_TREE_MISSING_WATER_MM, 'net_rain_sum']]).plot()
title = f"Missing Water\n{description}"
ax.set_ylabel("[mm]")
plt.title(title)
png_path2 = output_dir / f"missing_water_sum_{description}.png"
plt.savefig(png_path2,
bbox_inches='tight')
plt.close()
ax = df[[ETC_MM, RAIN_MM]].resample('1ME').sum().plot.bar()
title = f"Monthly ETc & Rain\n{description}"
ax.set_ylabel("[mm]")
month_labels = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
ax.set_xticklabels(month_labels)
plt.title(title)
png_path3 = output_dir / f"etc_{description}.png"
plt.savefig(png_path3,
bbox_inches='tight')
plt.close()
return png_path1, png_path2, png_path3
r"""Tries to find simstadt, find a workflowstep, and run it with the specified
CityGMLs.
It could be useful in order to run the same workflows with many different CityGMLs, or with slightly different
parameters.
User config part will probably need to be updated.
Corresponding workflows can be defined and saved in the SimStadt GUI.
Example output with the current configuration:
# SimStadt found in C:\Users\eric.duminil\Desktop\SimStadt_0.10.0-SNAPSHOT_master_20230601_607b426
# Preparing 'Gruenbuehl_PhotovoltaicPotential&Financial' workflow (a.step):
* Adding Gruenbuehl_LOD2_ALKIS_1010.gml
* Adding Gruenbuehl_LOD2_ALKIS_1010_2buildings.gml
# Launching Gruenbuehl_PhotovoltaicPotential&Financial:
Workflow finished succesfuly!
# Listing written files :
* 'Gruenbuehl.proj\a.step\a.step\a.step\a.step\a.step\hourly_GHI_DHI_Ta.prn'
* 'Gruenbuehl.proj\a.step\a.step\a.step\a.step\a.step\a.step\a.step\a.step\Gruenbuehl_LOD2_ALKIS_1010_2buildings_pvgis_SARAH_2005_2016_Hay_pv_potential.csv'
* 'Gruenbuehl.proj\a.step\a.step\a.step\a.step\a.step\a.step\a.step\a.step\Gruenbuehl_LOD2_ALKIS_1010_pvgis_SARAH_2005_2016_Hay_pv_potential.csv'
# Preparing 'Gruenbuehl_HeatDemand' workflow (b.step):
* Adding Gruenbuehl_LOD2_ALKIS_1010.gml
* Adding Gruenbuehl_LOD2_ALKIS_1010_2buildings.gml
# Launching Gruenbuehl_HeatDemand:
Workflow finished succesfuly!
# Listing written files :
* 'Gruenbuehl.proj\b.step\a.step\a.step\a.step\a.step\hourly_GHI_DHI_Ta.prn'
* 'Gruenbuehl.proj\b.step\a.step\a.step\a.step\a.step\a.step\a.step\Gruenbuehl_LOD2_ALKIS_1010_2buildings_DIN18599_HEATING.csv'
* 'Gruenbuehl.proj\b.step\a.step\a.step\a.step\a.step\a.step\a.step\Gruenbuehl_LOD2_ALKIS_1010_2buildings_DIN18599_HEATING.log'
* 'Gruenbuehl.proj\b.step\a.step\a.step\a.step\a.step\a.step\a.step\Gruenbuehl_LOD2_ALKIS_1010_DIN18599_HEATING.csv'
* 'Gruenbuehl.proj\b.step\a.step\a.step\a.step\a.step\a.step\a.step\Gruenbuehl_LOD2_ALKIS_1010_DIN18599_HEATING.log'
"""
import logging
import os
import platform
import re
import shutil
import subprocess
from pathlib import Path
from xml.etree import ElementTree as et
from dotenv import load_dotenv
from lib.simstadt_results import SimStadtResults, create_simstadt_results
from lib.utils import PROJECT_PATH, SCRIPT_DIR, chdir, random_id
PARAMS = "params.xml"
SIMSTADT2_GLOB = "SimStadt2_0.*/"
TEMPLATE_PATH = SCRIPT_DIR / 'Template'
load_dotenv()
log = logging.getLogger(__name__)
def find_simstadt(parent_folder: Path, simstadt_glob: str) -> Path:
try:
found = next(parent_folder.glob(simstadt_glob))
log.info("# SimStadt found in %s\n", found)
return found
except StopIteration as e:
log.error("Sorry, no SimStadt installation could be found in : %s/%s", parent_folder, simstadt_glob)
raise ValueError("SimStadt not found. Please define SIMSTADT_FOLDER environment variable.") from e
def check_paths(repo_path: Path, workflow_path: Path):
if not repo_path.exists():
raise ValueError(f"Sorry, no Repository could be found in {repo_path}")
if not workflow_path.exists():
raise ValueError(f"Sorry, no workflow could be found in {workflow_path}")
if not (workflow_path / PARAMS).exists():
raise ValueError(f"Sorry, no workflow is defined in {workflow_path / PARAMS}")
proj_path = workflow_path.parent
for gml in proj_path.glob("*.gml"):
log.debug(" * Available citygml : %s", gml.name)
def prepare_workflow(workflow_path: Path, citygmls: list[str]) -> str:
tree = et.parse(workflow_path / PARAMS)
root = tree.getroot()
node = root.find(".//void[@property='name']/string")
if node is None:
raise ValueError("Unknown workflow!")
name = node.text or "workflow"
log.info("# Preparing '%s' workflow (%s):", name, workflow_path.name)
citygml_node = root.find(".//void[@property='cityGmlFileNames']")
if citygml_node:
log.debug(" Removing old citygmls")
children = list(citygml_node)
for add_node in children:
citygml_node.remove(add_node)
else:
log.debug(" Add new XML node")
workflow_node = root.find(".//object[@class='eu.simstadt.workflows.CityGmlWorkflow']")
if workflow_node is None:
raise ValueError("Broken workflow!")
citygml_node = et.SubElement(workflow_node, "void")
citygml_node.set("property", "cityGmlFileNames")
for citygml in citygmls:
log.info(" * Adding %s", citygml)
add_node = et.SubElement(citygml_node, "void")
add_node.set("method", "add")
gml = et.SubElement(add_node, "string")
gml.text = citygml
tree.write(workflow_path / PARAMS)
return name
def get_all_files(folder: Path) -> dict[Path, float]:
files = [f for f in folder.glob("**/*") if f.is_file() and f.name != PARAMS]
return {f: f.stat().st_mtime for f in files}
def simstadt_script():
if platform.system().lower() == "windows":
return "SimStadt.bat"
return "./SimStadt.sh"
def regionchooser_script():
if platform.system().lower() == "windows":
return "RegionChooser.bat"
return "./RegionChooser.sh"
def run_simstadt(workflow_path: Path, name: str) -> str:
with chdir(get_simstadt_folder()):
log.info("Launching %s:", name)
result = subprocess.run([simstadt_script(), str(workflow_path)], text=True, capture_output=True, check=False)
if result.returncode != 0:
log.warning(" Workflow failed!\n%s", result.stdout)
raise ValueError("Workflow failed!")
log.debug(result.stdout)
log.info(" Workflow finished succesfuly!\n")
return result.stdout
def run_regionchooser(*params: str):
with chdir(get_simstadt_folder()):
result = None
try:
log.info("Launching RegionChooser %s:", params)
result = subprocess.run([regionchooser_script(), *params], text=True, capture_output=True, check=True)
log.debug(result.stdout)
log.info(" RegionChooser finished succesfuly!\n")
except subprocess.CalledProcessError as e:
log.warning(" RegionChooser failed!\n")
log.info(e.stderr)
raise
return result.stdout
def compare_written_files(repo_path: Path, before, after) -> list[Path]:
modified_files = []
log.info("# Listing written files :")
for result_file, modification_time in after.items():
before_time = before.get(result_file, 0)
if modification_time > before_time:
log.info(" * '%s'", result_file.relative_to(repo_path))
modified_files.append(result_file)
log.info("\n")
return modified_files
def run_workflow(workflow_path: Path, citygmls: list[str]) -> list[Path]:
repo_path = workflow_path.parent.parent
check_paths(repo_path, workflow_path)
name = prepare_workflow(workflow_path, citygmls)
before = get_all_files(workflow_path)
run_simstadt(workflow_path, name)
after = get_all_files(workflow_path)
return compare_written_files(repo_path, before, after)
def replace_params(workflow_path: Path, replaces: dict[str, str]):
param_files = workflow_path.glob(f"**/{PARAMS}")
replaced = False
for param_file in param_files:
with open(param_file, encoding="utf-8") as f:
content = f.read()
new_content = content
for old, new in replaces.items():
new_content = re.sub(old, new, new_content)
if new_content != content:
log.debug("Replacing parameters in %s", param_file)
replaced = True
with open(param_file, "w", encoding="utf-8") as f:
f.write(new_content)
if not replaced:
log.warning("No parameter has been replaced! %r", replaces)
def copy_workflow_from_template(
template_path: Path, project_path: Path, destination: str, replaces: dict | None = None
) -> Path:
template_path = template_path.with_suffix(".flow")
workflow_path = (project_path / destination).with_suffix(".flow")
shutil.copytree(template_path, workflow_path, dirs_exist_ok=True)
if replaces:
replace_params(workflow_path, replaces)
return workflow_path
def get_simstadt_folder():
if "SIMSTADT_FOLDER" in os.environ:
return Path(os.environ["SIMSTADT_FOLDER"])
return find_simstadt(Path.home() / "Desktop", SIMSTADT2_GLOB)
def run_workflow_with_citygml(
template: str | Path,
citygml_path: Path,
replaces: dict | None = None,
description: str | None = None,
destination: str | None = None,
) -> SimStadtResults:
if isinstance(template, str):
template_path = TEMPLATE_PATH / template
else:
template_path = template
template_name = template_path.stem
if destination is None:
# In order to avoid conflicts when two simulations are run as the same time
destination = random_id() + "_" + template_name.rsplit("_", 1)[-1]
project_path = citygml_path.parent
workflow_path = copy_workflow_from_template(
template_path,
project_path,
destination,
replaces,
)
output_files = run_workflow(workflow_path, [citygml_path.name])
if description is None:
description = f"{template_name} for {citygml_path.name}"
return create_simstadt_results(description, output_files)
if __name__ == "__main__":
template_and_citygmls = [
("101_HeatDemand", "Grombuehl_mini_Steinheilstrasse.gml"),
("102_GreenWater", "Grombühl_mini_with_trees.gml"),
("103_PV", "Grombühl_mini_with_trees.gml"),
]
set_weather_file = {"<string>METEONORM_FILE</string>": f"<string>Wuerzburg-hour.csv</string>"}
for template, citygml in template_and_citygmls:
results = run_workflow_with_citygml(template, PROJECT_PATH / citygml, replaces=set_weather_file)
print(results.dataframe)
print(repr(results))
import logging
import subprocess
from pathlib import Path
from lib.utils import chdir
log = logging.getLogger(__name__)
def run_urbi(
urbi_folder: Path,
gml_path: Path,
path_config_urbi: Path,
urbi_output_folder: Path,
gui_activate: bool = False,
):
if gui_activate:
gui = ["python", urbi_folder / "urbi.py", "--gui"]
try:
with chdir(urbi_folder):
process = subprocess.Popen(gui, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = process.communicate()
except Exception as e:
log.error(f"Error starting process: {e}")
else:
log.info(f"Output: {output.decode()}")
log.info(f"Error: {error.decode()}")
else:
log.info("Urbi+ started without GUI")
no_gui = [
"python",
"urbi.py",
"--config",
path_config_urbi,
gml_path,
"--output",
urbi_output_folder,
]
try:
with chdir(urbi_folder):
process = subprocess.Popen(no_gui, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
output, error = process.communicate()
log.info("Urbi+ success")
except Exception as e:
log.error(f"Error starting process: {e}")
"""Tries to parse SimStadt results, with as few input information as possible,
and as much output as possible, with a unified API, regardless of Workflows.
It should work with HeatDemand, Photovoltaic, and GreenWater.
Among others, it should offer dataframe, kpis, diagrams and csv_path
"""
import io
import json
import logging
import re
import zipfile
from abc import ABC, abstractmethod
from dataclasses import asdict, dataclass, field
from enum import Enum
from pathlib import Path
from typing import ClassVar, Dict, Sequence, Type
from xml.etree import ElementTree as et
import matplotlib.pyplot as plt
import pandas as pd
logger = logging.getLogger(__name__)
@dataclass
class KPI:
"""Metric, with name, value, unit and precision."""
name: str
value: float
unit: str | None = None
precision: int = 2
NAME_AND_UNIT = re.compile(r"^(.*?) \[(.*?)\]$")
def __post_init__(self):
"Some columns have integrated units in key. Move them to unit value"
if match := self.NAME_AND_UNIT.match(self.name):
self.name, self.unit = match.groups()
def to_dict(self) -> dict:
return asdict(self)
@property
def rounded_value(self) -> float:
return round(self.value, self.precision)
def __str__(self):
s = f"{self.name:35s} : {self.value:.{self.precision}f}"
if self.unit:
s = f"{s} {self.unit}"
return s
def __repr__(self):
return str(self)
@classmethod
def from_dict(cls, data: dict) -> "KPI":
return cls(**data)
class Providers(str, Enum):
HEAT_DEMAND = "de.hftstuttgart.simstadtworkflows.energy.HeatDemandAnalysisWorkflowProvider"
HEAT_DEMAND_WITH_REFURBISHMENT = (
"de.hftstuttgart.simstadtworkflows.energy.HeatDemandAnalysisWithRefurbishmentStrategyWorkflowProvider"
)
HEAT_DEMAND_WITH_SHADOW = (
"de.hftstuttgart.simstadtworkflows.shadow.HeatDemandCalculationWithShadowProcessingProvider"
)
PHOTOVOLTAIC = "de.hftstuttgart.simstadtworkflows.energy.PhotovoltaicPotentialAnalysisWorkflowProvider"
PHOTOVOLTAIC_WITH_SHADOW = "de.hftstuttgart.simstadtworkflows.shadow.PVPotentialWithShadowProcessingProvider"
PHOTOVOLTAIC_FINANCE = (
"de.hftstuttgart.simstadtworkflows.economics.PhotovoltaicPotentialFinancialAnalysisWorkflowProvider"
)
GREEN_WATER = "de.hftstuttgart.simstadtworkflows.greenwater.GreenWaterWorkflowProvider"
def detect_decimal(csv_path: Path, line_number: int, check: str = ""):
"""Parse the line_number th line of csv_path, and tries to detect if ',' or '.' is used for decimals."""
with open(csv_path, encoding="utf-8") as csv:
for _ in range(line_number):
next(csv)
line = next(csv)
if check and (check not in line):
raise ValueError(f"Couldn't find '{check}' in '{line}'.")
possible_delimiters = [".", ","]
delimiter = next(delimiter for delimiter in possible_delimiters if delimiter in line)
logger.debug("Decimal for %s is '%s'", csv_path.name, delimiter)
return delimiter
def get_workflow_provider(output_files):
"""Determine the workflow provider from the output files"""
if len(output_files) == 0:
raise ValueError("No output files were provided!")
# Find the workflow path from the first output file
first_output_file = output_files[0]
workflow_path = next(d for d in first_output_file.parents if d.suffix == ".flow")
params_xml = workflow_path / "params.xml"
# Parse the params.xml file
tree = et.parse(params_xml)
root = tree.getroot()
element = root.find(".//void[@property='workflowProvider']/object")
assert element is not None, "workflowProvider element not found"
# Find the workflowProvider
return element.get("class", "UnknownWorkflowProvider")
@dataclass
class SimStadtResults(ABC):
"""Base abstract class for SimStadt results"""
description: str
output_files: list[Path]
# List of providers this class supports
supported_providers: ClassVar[list[str]]
# A substring which should be found in the main CSV. Some workflows output more than 1 CSV
csv_identifier: ClassVar[str]
# Registry of concrete implementations
_registry: ClassVar[Dict[str, Type["SimStadtResults"]]] = {}
# Dataframe will hold most data.
# NOTE: For custom data which doesn't fit in the table, df.attrs can be used.
_df: pd.DataFrame | None = field(default=None, init=False, repr=False)
def __init_subclass__(cls, **kwargs):
"""Register subclasses for factory pattern"""
super().__init_subclass__(**kwargs)
for provider in cls.supported_providers:
SimStadtResults._registry[provider] = cls
@abstractmethod
def _parse_results(self) -> pd.DataFrame:
pass
@property
def dataframe(self) -> pd.DataFrame:
if self._df is None:
self._df = self._parse_results()
return self._df
@property
def more_info(self) -> dict[str, list[KPI]]:
return {}
@property
@abstractmethod
def kpis(self) -> list[KPI]:
"""Return KPIs for this workflow"""
pass
def kpi(self, name: str) -> KPI:
"""Return KPI name 'name' for this workflow, if available"""
for kpi in self.kpis:
if kpi.name == name:
return kpi
raise ValueError(f"No '{name}' KPI found for {self}")
def _prepare_kpis(self, sums: Sequence, averages: Sequence) -> list[KPI]:
kpis = []
default_precision = 0
for item in sums:
name, unit, precision = (item + (default_precision,))[:3]
kpis.append(KPI(name, self.dataframe[name].sum(), unit, precision))
for item in averages:
name, unit, precision = (item + (default_precision,))[:3]
kpis.append(KPI(name, float(self.dataframe[name].mean()), unit, precision))
return kpis
def _params_xml(self) -> Path:
return self.workflow_path / "params.xml"
def _params(self) -> et.Element:
tree = et.parse(self._params_xml())
root = tree.getroot()
return root
def _params_element(self, xpath: str) -> et.Element:
element = self._params().find(xpath)
if element is None:
raise ValueError(f"'{xpath}' not found in XML")
return element
@property
def name(self) -> str:
return self._params_element(".//void[@property='name']/string").text or "Unknown"
@property
def short_name(self) -> str:
return self._params_element(".//void[@property='shortName']/string").text or "Unknown"
@property
def workflow_provider(self) -> str:
return self._params_element(".//void[@property='workflowProvider']/object").get("class", "Unknown provider")
@property
def workflow_path(self) -> Path:
first_output_file = self.output_files[0]
return first_output_file.parent.parent
@property
def citygml(self) -> str:
return self._params_element(".//void[@property='cityGmlFileNames']//string").text or "Unknown CityGML"
@property
def project_path(self) -> Path:
return self.workflow_path.parent
@property
def project(self) -> str:
return self.project_path.stem
@property
def repository(self) -> Path:
return self.project_path.parent
def relative_paths(self) -> list[str]:
workflow_path = self.workflow_path
return [f.relative_to(workflow_path).as_posix() for f in self.output_files]
def __str__(self) -> str:
return f"{self.description} ({self.class_name})"
def __repr__(self) -> str:
files_description = "\n".join(f" - {f}" for f in self.relative_paths())
kpis = "\n".join(f" {k}" for k in self.kpis)
return f"""{self.description} ({self.class_name}, {self.project}, {self.workflow_path.name}, {self.citygml})
{files_description}\n{kpis}"""
@property
def class_name(self) -> str:
return type(self).__name__
@property
def csv_path(self) -> Path:
"""Returns the last found CSV"""
csvs = self.get_all_by_extension(".csv")
relevant_csvs = [csv for csv in csvs if self.csv_identifier in csv.name]
if len(relevant_csvs) == 0:
raise ValueError("Workflow didn't seem to have returned any CSV file!")
if len(relevant_csvs) > 1:
logger.warning("Too many CSV results found for %s", self)
return relevant_csvs[-1]
def csv_content(self) -> bytes:
with open(self.csv_path, "rb") as f:
return f.read()
def get_all_by_extension(self, ext: str) -> list[Path]:
return [f for f in sorted(self.output_files) if f.suffix == ext]
@property
def diagrams(self) -> dict[str, Path]:
return {}
def log_content(self) -> bytes:
"""Returns the content of log file, if available"""
logs = self.get_all_by_extension(".log")
if len(logs) == 0:
return b""
log = logs[-1]
with open(log, "rb") as f:
return f.read()
def zip_content(self) -> bytes:
zip_buffer = io.BytesIO()
with zipfile.ZipFile(zip_buffer, "w", zipfile.ZIP_DEFLATED, False) as zf:
for file_path in self.output_files:
zf.write(file_path, arcname=file_path.name)
zip_buffer.seek(0) # Rewind to the beginning of the buffer
zipped_content_bytes = zip_buffer.read()
return zipped_content_bytes
def to_dict(self):
"""Convert instance to a dictionary with path objects converted to strings"""
# Start with a clean dictionary instead of using asdict
data = {
"description": self.description,
"output_files": [str(path) for path in self.output_files],
"_type": self.class_name,
}
# Force CSV parsing, and convert DataFrame to a dictionary representation
data["_df_dict"] = self.dataframe.to_dict("records")
# save metadata too
if self.dataframe.attrs:
data["_df_attrs"] = self.dataframe.attrs
return data
@classmethod
def from_dict(cls, data):
# Remove the type information before instantiation
data.pop("_type", None)
# Handle DataFrame serialization
df_dict = data.pop("_df_dict", None)
df_attrs = data.pop("_df_attrs", {})
# Convert paths back to Path objects
data["output_files"] = [Path(p) for p in data["output_files"]]
if cls is SimStadtResults:
# If it's a base class instantiation, detect the type from workflow_provider
provider = get_workflow_provider(data["output_files"])
result = cls.create(provider, **data)
else:
result = cls(**data)
result._df = pd.DataFrame(df_dict)
result._df.attrs = df_attrs
return result
def to_json(self):
return json.dumps(self.to_dict())
@classmethod
def from_json(cls, json_str):
return cls.from_dict(json.loads(json_str))
@classmethod
def create(cls, provider: str, **kwargs) -> "SimStadtResults":
"""Factory method to create the correct subclass based on provider"""
if provider not in cls._registry:
raise ValueError(f"Unknown workflow provider: {provider}")
return cls._registry[provider](**kwargs)
@dataclass(repr=False)
class HeatDemandResults(SimStadtResults):
"""Results for Heat Demand workflow"""
MAX_FLAT_ROOF_DIFFERENCE = 0.1 # [m]
TOTAL_DEMAND = "Total Yearly Heating + DHW demand"
supported_providers: ClassVar[list[str]] = [
Providers.HEAT_DEMAND,
Providers.HEAT_DEMAND_WITH_SHADOW,
Providers.HEAT_DEMAND_WITH_REFURBISHMENT,
]
csv_identifier = "DIN18599"
def _parse_results(self) -> pd.DataFrame:
csv_decimal = detect_decimal(self.csv_path, 5, "Latitude")
df = pd.read_csv(self.csv_path, skiprows=list(range(19)) + [20], sep=";", decimal=csv_decimal)
logger.debug("Looking for flat roofs")
df["has_flat_roof"] = (
df["Ridge/mean Height"] - df["Eaves/mean Height"] < self.MAX_FLAT_ROOF_DIFFERENCE
).fillna(False)
df.attrs["Heating"] = "Yearly Heating demand" in df.columns
df.attrs["Cooling"] = "Yearly Cooling demand" in df.columns
return df
@property
def kpis(self):
df = self.dataframe
custom_kpis = [
KPI("Number of buildings", df.shape[0], precision=0),
]
sums = [
("Heated area", "m²"),
("Footprint area", "m²"),
]
if df.attrs["Heating"]:
specific_heat_demand = df[self.TOTAL_DEMAND].sum() / df["Heated area"].sum()
heated_buildings = int((df[self.TOTAL_DEMAND] > 10_000).sum())
custom_kpis.extend(
[
KPI("Number of heated buildings", heated_buildings, precision=0),
KPI("Specific Heating Demand", specific_heat_demand, "kWh / (m² · a)", precision=0),
]
)
sums.extend(
[
("Yearly Heating demand", "kWh / a"),
(self.TOTAL_DEMAND, "kWh / a"),
]
)
if df.attrs["Cooling"]:
specific_cooling_demand = df["Yearly Cooling demand"].sum() / df["Heated area"].sum()
custom_kpis.append(KPI("Specific Cooling Demand", specific_cooling_demand, "kWh / (m² · a)", precision=0))
sums.extend(
[
("Yearly Cooling demand", "kWh / a"),
]
)
averages = [("Mean Uvalue", "W / (m² · K)", 1), ("Year of construction", None), ("Storey number", None)]
return custom_kpis + self._prepare_kpis(sums, averages)
@property
def diagrams(self) -> dict[str, Path]:
heat_png = self.workflow_path / "heating.png"
ax = self.monthly_df().plot.bar(
rot=0,
ylabel="[MWh]",
width=0.8,
color={"Monthly Heating Demand": "darkred", "Monthly Cooling Demand": "darkblue"},
)
plt.savefig(heat_png, bbox_inches="tight", dpi=300)
plt.close(ax.figure)
return {"Monthly demands": heat_png}
def monthly_df(self) -> pd.DataFrame:
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
df = self.dataframe
monthly_df = pd.DataFrame([], index=pd.Index(months))
modes = ["Heating", "Cooling"]
for mode in modes:
search_str = f"{mode} demand"
found_cols = [
col for col in df.columns if search_str in col and ("Yearly" not in col) and ("Specific" not in col)
]
if found_cols:
monthly_df[f"Monthly {mode} Demand"] = (df[found_cols].sum() / 1000).values
return monthly_df
@dataclass(repr=False)
class PhotovoltaicResults(SimStadtResults):
"""Results for Photovoltaic workflow"""
supported_providers: ClassVar[list[str]] = [
Providers.PHOTOVOLTAIC,
Providers.PHOTOVOLTAIC_FINANCE,
Providers.PHOTOVOLTAIC_WITH_SHADOW,
]
csv_identifier = "_pv_potential"
def _count_header_lines(self) -> int:
count = 0
with open(self.csv_path) as csv:
for line in csv:
if line.startswith("Building ID"):
return count
count += 1
raise ValueError(f"Header not found in {self.csv_path}")
def _parse_results(self) -> pd.DataFrame:
csv_decimal = detect_decimal(self.csv_path, 4, "Latitude")
header_length = self._count_header_lines()
df = pd.read_csv(
self.csv_path, skiprows=list(range(header_length)) + [header_length + 1], sep=";", decimal=csv_decimal
)
df = df.rename(columns={"Area": "Roof area for PV"})
# Remove unused Finance columns
return df.dropna(axis=1, how="all")
@property
def kpis(self):
sums = [("Roof area for PV", "m²"), ("PV potential nominal power", "kWp"), ("PV potential yield", "MWh / a")]
averages = [("Irradiance in module plane", "W / m²"), ("PV specific yield", "kWh / (kWp · a)")]
return self._prepare_kpis(sums, averages)
@dataclass(repr=False)
class GreenWaterResults(SimStadtResults):
"""Results for GreenWater workflow"""
csv_identifier = "_greenwater"
supported_providers: ClassVar[list[str]] = [Providers.GREEN_WATER]
RAIN_L = "Sum rain [L]"
SINGLE_TREE_ETC_L = "Single tree ETc [L]"
SINGLE_TREE_MISSING_WATER_L = "Single tree missing water [L]"
def _parse_results(self) -> pd.DataFrame:
csv_decimal = detect_decimal(self.csv_path, 5, "tree area")
df = pd.read_csv(
self.csv_path, sep=";", header=[0, 1], skiprows=list(range(8)) + list(range(10, 13)), decimal=csv_decimal
)
# First row should be forward-filled, since species are not repeated
cols = df.columns.tolist()
new_cols = []
current_species = "All"
species = []
for col in cols:
# Sadly, multiindex columns cannot be saved to JSON, so we flatten them
level0, level1 = col
if pd.notna(level0) and not level0.startswith("Unnamed") and not level0.startswith("#"):
current_species = level0
species.append(current_species)
if current_species == "All":
new_cols.append(level1)
else:
new_cols.append(f"{current_species} - {level1}")
df.columns = new_cols
########################
# Parse headers #
########################
with open(self.csv_path, encoding="utf-8") as csv:
line = ""
for _ in range(5):
line = next(csv)
tree_count = int(line.split(";")[1])
line = next(csv)
tree_area_header = re.split("[;,]", line.strip())
total_tree_area = float(tree_area_header[1].replace(",", "."))
if tree_count == 0:
raise ValueError(f"CityGML {self.citygml} does not have any tree!")
for _ in range(5):
line = next(csv)
species_count = [int(c) for c in re.split(";+", line.strip())[1:-1]]
line = next(csv)
species_area = [float(c.replace(",", ".")) for c in re.split(";+", line.strip())[1:-1]]
species.pop(0)
df.attrs = {
"species": {
name: {"count": count, "area": area} for name, count, area in zip(species, species_count, species_area)
},
"tree count": tree_count,
"tree area": total_tree_area,
}
return df
def df_with_time(self):
# NOTE: DateTimeIndex is somehow not serializable, so it has to be created dynamically
df = self.dataframe
year = 2005
times = pd.date_range(start=f"{year}-01-01 00:00", freq="1h", periods=8760)
df = df.set_index(times)
df = df.drop(columns=["#"])
return df
@property
def kpis(self):
df = self.dataframe
rain = df["Rain [mm]"].sum()
etc = df["Average ETc [mm]"].sum()
cooling = df["Evaporative cooling [kWh/h]"].sum() / 1000
irrigation_mm = df["Average irrigation [mm]"].sum()
tree_area = df.attrs["tree area"]
irrigation_m3 = irrigation_mm * tree_area / 1000
return [
KPI("Number of trees", df.attrs["tree count"], precision=0),
KPI("Projected tree area", tree_area, "m²", precision=1),
KPI("Rain", rain, "mm / a", precision=0),
KPI("Average ETc", etc, "mm / a", precision=0),
KPI("Irrigation", irrigation_m3, "m³ / a", precision=0),
KPI("Evaporative cooling", cooling, "MWh / a", precision=0),
]
@property
def more_info(self) -> dict[str, list[KPI]]:
df = self.dataframe
all_info = {}
species = df.attrs["species"]
for name, info in species.items():
count = info["count"]
area = info["area"]
irrigation_mm = df[f"{name} - Average irrigation [mm]"].sum()
average_area = area / count
species_kpis = [
KPI(
"Number of trees",
value=count,
precision=0,
),
KPI(
"Average tree area",
value=average_area,
unit="m²",
precision=1,
),
KPI(
"Average ETc",
value=df[f"{name} - Average ETc [mm]"].sum(),
unit="mm / a",
precision=0,
),
KPI(
"Irrigation",
value=irrigation_mm,
unit="mm / a",
precision=0,
),
KPI(
"Average irrigation",
value=average_area * irrigation_mm / 1000,
unit="m³ / a",
precision=0,
),
]
all_info[f"_{name}_"] = species_kpis
return all_info
@property
def diagrams(self) -> dict[str, Path]:
rain_irrigation_png = self.workflow_path / "rain_and_irrigation.png"
df_months = self.df_with_time()[["Rain [mm]", "Average irrigation [mm]"]].resample("ME").sum()
fig, ax = plt.subplots()
df_months = df_months.rename(
columns={"Rain [mm]": "Niederschlag", "Average irrigation [mm]": "Künstliche Bewässerung"}
)
df_months.plot(kind="bar", stacked=True, ax=ax, ylabel="[mm]", figsize=(13, 6))
ax.set_xticklabels([x.strftime("%b") for x in df_months.index], rotation=0)
plt.savefig(rain_irrigation_png, bbox_inches="tight", dpi=300)
plt.close(fig)
return {"Rain and Irrigation": rain_irrigation_png}
# Factory function for convenience
def create_simstadt_results(description: str, output_files: list[Path]) -> SimStadtResults:
"""Create appropriate SimStadtResults object based on workflow provider"""
provider = get_workflow_provider(output_files)
return SimStadtResults.create(provider, description=description, output_files=sorted(output_files))
if __name__ == "__main__":
output_files = [
Path(
"Repository/CGSC.proj/101_HeatDemand.flow/02_WeatherProcessor.step/hourly_GHI_DHI_Ta_meteonorm_Wuerzburg.prn"
),
Path(
"Repository/CGSC.proj/101_HeatDemand.flow/04_MonthlyEnergyBalance.step/Grombuehl_mini_Steinheilstrasse_DIN18599_HEATING.csv"
),
Path(
"Repository/CGSC.proj/101_HeatDemand.flow/04_MonthlyEnergyBalance.step/Grombuehl_mini_Steinheilstrasse_DIN18599_HEATING.log"
),
]
results = create_simstadt_results("Heat demand simulation for Grombühl", output_files)
print(repr(results))
from pathlib import Path
from lib.run_simstadt_workflow import run_workflow_with_citygml
from lib.simstadt_results import SimStadtResults
from lib.utils import PROJECT_PATH, remove_random_id, set_random_seed
################################################################################
# Simulation functions, for callbacks, testing and optimization #
################################################################################
def set_weather_file(meteonorm_filename: str) -> dict[str, str]:
# Input filename sometimes contains just the basename, sometimes the whole path
return {"<string>METEONORM_FILE</string>": f"<string>{Path(meteonorm_filename).name}</string>"}
def set_calculation_mode(calculation_mode: str) -> dict[str, str]:
allowed_modes = ["HEATING", "COOLING", "HEATING_AND_COOLING"]
if calculation_mode not in allowed_modes:
raise ValueError(f"{calculation_mode} should be in {allowed_modes}")
return {"<string>CALCULATION_MODE</string>": f"<string>{calculation_mode}</string>"}
def set_refurbishment(geg_ratio: float) -> dict[str, str]:
return {"<double>GEG_RATIO</double>": f"<double>{geg_ratio}</double>"}
def photovoltaic_simulation(
gml_filename: str,
meteonorm_filename: str,
roof_percentage: float = 100.0, # [%]
pv_share_flat: float = 40, # [%]
pv_share_tilted: float = 50, # [%]
min_roof_insolation: float = 1000, # [kWh / (m² . a)]
hourly_pv: bool = False,
with_shadows: bool = True,
description="🌤️ Photovoltaik",
) -> SimStadtResults:
set_weather_file_and_pv_share = set_weather_file(meteonorm_filename) | {
"<int>PV_SHARE_FLAT_ROOF</int>": f"<int>{pv_share_flat}</int>",
"<int>PV_SHARE_TILTED_ROOF</int>": f"<int>{pv_share_tilted}</int>",
"<int>MIN_ROOF_INSOLATION</int>": f"<int>{min_roof_insolation}</int>",
"<boolean>HOURLY_PV</boolean>": f"<boolean>{str(hourly_pv).lower()}</boolean>",
}
template = "105_PVWithShadow" if with_shadows else "103_PV"
pv_results = run_workflow_with_citygml(
template,
PROJECT_PATH / gml_filename,
replaces=set_weather_file_and_pv_share,
description=description,
)
set_random_seed(remove_random_id(gml_filename))
# Only keep roof_percentage of rows
pv_results._df = pv_results.dataframe.sample(frac=roof_percentage / 100.0)
return pv_results
def heatdemand_simulation(
gml_filename: str,
meteonorm_filename: str,
with_shadows: bool = True,
calculation_mode: str = "HEATING",
refurbishment_ratio: float = 0.0,
description="🏡🌤️ Wärmebedarf",
) -> SimStadtResults:
template = "104_HeatDemandWithShadow" if with_shadows else "101_HeatDemand"
return run_workflow_with_citygml(
template,
PROJECT_PATH / gml_filename,
replaces=set_weather_file(meteonorm_filename)
| set_calculation_mode(calculation_mode)
| set_refurbishment(refurbishment_ratio),
description=description,
)
def greenwater_simulation(
gml_filename: str, meteonorm_filename: str, irrigation_ratio: float, description="🌱 Grün & Wasser"
) -> SimStadtResults:
# irrigation_ratio 1.0 : Irrigation when needed
# irrigation_ratio 0.0 : No irrigation
set_weather_file_and_irrigation = set_weather_file(meteonorm_filename) | {
"<double>MAX_WATER_STRESS</double>": f"<double>{1 - irrigation_ratio}</double>",
}
return run_workflow_with_citygml(
"102_GreenWater",
PROJECT_PATH / gml_filename,
replaces=set_weather_file_and_irrigation,
description=description,
)
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_422" class="java.beans.XMLDecoder">
<object class="eu.simstadt.citygml.steps.ImportCityGml" id="ImportCityGml0">
<void class="de.hftstuttgart.hierarchicworkflow.WorkflowStep" method="getField">
<string>startStep</string>
<void method="set">
<object idref="ImportCityGml0"/>
<boolean>true</boolean>
</void>
</void>
<void class="de.hftstuttgart.hierarchicworkflow.WorkflowStep" method="getField">
<string>selectedNextStepPath</string>
<void method="set">
<object idref="ImportCityGml0"/>
<string>01_Preprocessing.step</string>
</void>
</void>
<void property="name">
<string>Base</string>
</void>
</object>
</java>
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_422" class="java.beans.XMLDecoder">
<object class="eu.simstadt.workflowsteps.GeometricPreprocessorStep" id="GeometricPreprocessorStep0">
<void class="de.hftstuttgart.hierarchicworkflow.WorkflowStep" method="getField">
<string>startStep</string>
<void method="set">
<object idref="GeometricPreprocessorStep0"/>
<boolean>true</boolean>
</void>
</void>
<void class="de.hftstuttgart.hierarchicworkflow.WorkflowStep" method="getField">
<string>selectedNextStepPath</string>
<void method="set">
<object idref="GeometricPreprocessorStep0"/>
<string>01_GeometricEstimator.step</string>
</void>
</void>
<void property="name">
<string>Base</string>
</void>
</object>
</java>
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_422" class="java.beans.XMLDecoder">
<object class="eu.simstadt.workflowsteps.GeometricEstimatorStep" id="GeometricEstimatorStep0">
<void class="de.hftstuttgart.hierarchicworkflow.WorkflowStep" method="getField">
<string>selectedNextStepPath</string>
<void method="set">
<object idref="GeometricEstimatorStep0"/>
<string>02_PhysicsPreprocessor.step</string>
</void>
</void>
<void property="name">
<string>Base</string>
</void>
</object>
</java>
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_422" class="java.beans.XMLDecoder">
<object class="eu.simstadt.workflowsteps.PhysicsPreprocessorStep" id="PhysicsPreprocessorStep0">
<void class="de.hftstuttgart.hierarchicworkflow.WorkflowStep" method="getField">
<string>selectedNextStepPath</string>
<void method="set">
<object idref="PhysicsPreprocessorStep0"/>
<string>03_UsagePreprocessor.step</string>
</void>
</void>
<void property="name">
<string>Base</string>
</void>
</object>
</java>
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_422" class="java.beans.XMLDecoder">
<object class="eu.simstadt.workflowsteps.UsagePreprocessorStep">
<void property="name">
<string>Base</string>
</void>
</object>
</java>
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_422" class="java.beans.XMLDecoder">
<object class="eu.simstadt.workflowsteps.Preprocessing" id="Preprocessing0">
<void class="de.hftstuttgart.hierarchicworkflow.Workflow" method="getField">
<string>selectedStartStepPath</string>
<void method="set">
<object idref="Preprocessing0"/>
<string>00_GeometricPreprocessor.step</string>
</void>
</void>
<void class="de.hftstuttgart.hierarchicworkflow.WorkflowStep" method="getField">
<string>selectedNextStepPath</string>
<void method="set">
<object idref="Preprocessing0"/>
<string>02_WeatherProcessor.step</string>
</void>
</void>
<void property="name">
<string>Base</string>
</void>
</object>
</java>
0 0 9.20
0 0 8.90
0 0 8.60
0 0 8.50
0 0 8.40
0 0 8.20
0 0 8.20
0 0 8.10
3 3 8.30
68 55 9.20
128 97 10.10
176 125 10.90
179 135 11.40
146 118 11.60
100 85 11.60
44 41 11.20
1 1 10.70
0 0 10.40
0 0 10.20
0 0 9.90
0 0 9.60
0 0 9.40
0 0 9.10
0 0 8.80
0 0 8.40
0 0 7.80
0 0 7.30
0 0 7.00
0 0 6.80
0 0 6.50
0 0 6.30
0 0 6.00
2 2 6.00
37 37 6.40
71 71 6.80
83 83 7.00
54 54 7.00
50 50 6.90
44 44 6.90
24 24 6.70
1 1 6.20
0 0 6.10
0 0 5.80
0 0 5.50
0 0 5.20
0 0 4.90
0 0 4.60
0 0 4.30
0 0 4.20
0 0 4.10
0 0 4.10
0 0 4.10
0 0 4.10
0 0 4.10
0 0 4.20
0 0 4.20
4 4 4.50
91 42 6.60
167 59 8.60
203 88 10.10
213 107 11.10
188 100 11.60
137 75 11.60
62 42 10.80
1 1 9.70
0 0 9.00
0 0 8.30
0 0 7.70
0 0 7.00
0 0 6.30
0 0 5.60
0 0 5.00
0 0 4.10
0 0 3.10
0 0 2.10
0 0 1.50
0 0 1.00
0 0 0.40
0 0 0.00
0 0 -0.40
3 3 -0.40
106 36 1.30
193 43 2.80
259 45 4.10
285 46 5.00
256 45 5.50
201 49 5.40
90 32 4.60
1 1 3.40
0 0 3.00
0 0 2.50
0 0 2.10
0 0 1.70
0 0 1.30
0 0 0.80
0 0 0.40
0 0 0.30
0 0 0.30
0 0 0.30
0 0 0.30
0 0 0.30
0 0 0.30
0 0 0.30
0 0 0.30
2 2 0.40
27 27 1.00
47 47 1.50
52 52 1.80
61 61 2.10
72 72 2.30
52 52 2.50
25 25 2.30
1 1 1.70
0 0 1.80
0 0 1.50
0 0 1.30
0 0 1.10
0 0 0.90
0 0 0.70
0 0 0.50
0 0 0.00
0 0 -0.50
0 0 -1.00
0 0 -1.30
0 0 -1.50
0 0 -1.80
0 0 -2.00
0 0 -2.20
5 5 -2.00
90 55 -0.40
155 72 1.00
196 97 2.10
195 140 2.70
189 96 3.10
142 71 3.10
68 45 2.40
1 1 1.40
0 0 1.10
0 0 0.80
0 0 0.50
0 0 0.20
0 0 -0.10
0 0 -0.40
0 0 -0.70
0 0 -0.80
0 0 -0.90
0 0 -1.10
0 0 -1.10
0 0 -1.20
0 0 -1.30
0 0 -1.30
0 0 -1.30
3 3 -1.20
61 54 0.10
113 97 1.30
155 132 2.30
163 140 3.10
148 123 3.40
93 89 3.30
41 41 2.70
1 1 2.00
0 0 1.70
0 0 1.50
0 0 1.30
0 0 1.00
0 0 0.80
0 0 0.60
0 0 0.30
0 0 0.00
0 0 -0.30
0 0 -0.60
0 0 -1.00
0 0 -1.00
0 0 -1.10
0 0 -1.20
0 0 -1.40
2 2 -1.30
32 32 -0.80
63 63 -0.30
82 82 0.10
74 74 0.30
81 81 0.40
58 58 0.40
29 29 0.20
1 1 -0.20
0 0 -0.50
0 0 -0.80
0 0 -1.10
0 0 -1.40
0 0 -1.70
0 0 -2.00
0 0 -2.30
0 0 -2.60
0 0 -2.70
0 0 -3.00
0 0 -3.10
0 0 -3.20
0 0 -3.30
0 0 -3.40
0 0 -3.50
2 2 -3.40
11 11 -3.20
19 19 -3.00
24 24 -2.90
25 25 -2.80
191 119 -1.60
142 77 -1.00
72 45 -1.00
2 2 -1.40
0 0 -1.60
0 0 -1.90
0 0 -2.10
0 0 -2.30
0 0 -2.50
0 0 -2.70
0 0 -2.90
0 0 -3.10
0 0 -3.30
0 0 -3.40
0 0 -3.50
0 0 -3.60
0 0 -3.70
0 0 -3.70
0 0 -3.80
2 2 -3.70
23 23 -3.20
35 35 -2.90
52 52 -2.40
68 68 -2.10
220 130 -0.60
222 85 0.40
105 34 0.50
5 5 -0.20
0 0 -0.40
0 0 -0.70
0 0 -0.90
0 0 -1.20
0 0 -1.40
0 0 -1.60
0 0 -1.90
0 0 -2.20
0 0 -2.40
0 0 -2.70
0 0 -2.80
0 0 -2.90
0 0 -3.00
0 0 -3.00
0 0 -3.10
5 5 -2.80
87 45 -1.00
178 62 1.00
229 79 2.50
281 93 3.90
231 87 4.50
149 76 4.30
72 48 3.50
2 2 2.30
0 0 1.60
0 0 0.90
0 0 0.20
0 0 -0.50
0 0 -1.20
0 0 -1.90
0 0 -2.60
0 0 -3.50
0 0 -4.70
0 0 -5.80
0 0 -6.50
0 0 -7.20
0 0 -7.80
0 0 -8.40
0 0 -8.90
6 6 -9.00
110 38 -8.10
205 45 -7.20
281 52 -6.40
293 65 -6.00
251 66 -6.00
194 46 -6.20
103 38 -6.80
4 4 -7.80
0 0 -8.30
0 0 -8.80
0 0 -9.30
0 0 -9.80
0 0 -10.30
0 0 -10.80
0 0 -9.90
0 0 -9.80
0 0 -9.50
0 0 -9.30
0 0 -9.10
0 0 -8.90
0 0 -8.80
0 0 -8.70
0 0 -8.50
3 3 -8.30
79 56 -6.30
152 85 -4.30
213 99 -2.50
222 112 -1.30
195 108 -0.70
136 104 -0.70
58 51 -1.60
2 2 -2.80
0 0 -2.80
0 0 -2.80
0 0 -2.90
0 0 -2.90
0 0 -2.90
0 0 -2.90
0 0 -2.90
0 0 -3.20
0 0 -3.50
0 0 -3.80
0 0 -4.00
0 0 -4.10
0 0 -4.30
0 0 -4.40
0 0 -4.60
2 2 -4.50
15 15 -4.40
28 28 -4.30
36 36 -4.20
40 40 -4.20
37 37 -4.20
28 28 -4.20
15 15 -4.30
2 2 -4.40
0 0 -4.70
0 0 -4.90
0 0 -5.40
0 0 -5.20
0 0 -5.40
0 0 -5.60
0 0 -5.80
0 0 -6.10
0 0 -6.60
0 0 -6.60
0 0 -6.70
0 0 -6.90
0 0 -7.10
0 0 -7.20
0 0 -7.30
1 1 -7.40
23 23 -7.10
43 43 -6.80
53 53 -6.60
58 58 -6.50
50 50 -6.40
37 37 -6.50
23 23 -6.70
1 1 -6.90
0 0 -6.70
0 0 -6.60
0 0 -6.40
0 0 -6.20
0 0 -6.10
0 0 -5.80
0 0 -5.60
0 0 -5.40
0 0 -5.20
0 0 -5.00
0 0 -4.80
0 0 -4.70
0 0 -4.60
0 0 -4.60
0 0 -4.40
2 2 -4.20
15 15 -4.10
31 31 -3.20
36 36 -2.80
39 39 -2.50
37 37 -2.30
28 28 -2.30
15 15 -2.40
2 2 -2.60
0 0 -2.90
0 0 -2.80
0 0 -3.00
0 0 -3.00
0 0 -3.10
0 0 -3.10
0 0 -3.20
0 0 -3.60
0 0 -3.90
0 0 -4.30
0 0 -4.50
0 0 -4.70
0 0 -4.90
0 0 -5.00
0 0 -5.10
5 5 -4.90
55 54 -3.80
135 104 -2.20
203 122 -0.60
266 102 0.90
263 73 1.90
260 85 2.60
144 48 2.30
10 10 0.90
0 0 0.70
0 0 0.40
0 0 0.20
0 0 -0.10
0 0 -0.30
0 0 -0.60
0 0 -0.80
0 0 -1.00
0 0 -1.20
0 0 -1.40
0 0 -1.50
0 0 -1.60
0 0 -1.70
0 0 -1.80
0 0 -1.80
8 8 -1.50
101 48 0.60
199 66 2.70
236 95 4.20
254 103 5.20
217 118 5.70
136 111 5.30
78 65 4.50
3 3 3.30
0 0 3.10
0 0 3.00
0 0 2.90
0 0 2.70
0 0 2.60
0 0 2.50
0 0 2.30
0 0 2.10
0 0 2.00
0 0 1.90
0 0 1.80
0 0 1.70
0 0 1.70
0 0 1.60
0 0 1.60
2 2 1.70
11 11 2.00
23 23 2.20
41 41 2.60
42 42 2.80
258 141 4.70
202 61 5.60
116 44 5.90
7 7 5.20
0 0 5.00
0 0 4.90
0 0 4.70
0 0 4.60
0 0 4.40
0 0 4.30
0 0 4.20
0 0 4.00
0 0 3.70
0 0 3.40
0 0 3.30
0 0 3.20
0 0 3.10
0 0 2.70
0 0 2.80
2 2 2.90
10 10 2.90
20 20 3.00
26 26 3.00
26 26 3.00
24 24 3.00
19 19 3.00
10 10 2.90
2 2 2.10
0 0 2.70
0 0 2.60
0 0 2.60
0 0 2.40
0 0 2.40
0 0 2.30
0 0 2.00
0 0 2.40
0 0 2.50
0 0 2.60
0 0 2.60
0 0 2.70
0 0 2.70
0 0 2.80
0 0 2.80
3 3 3.00
38 38 3.90
52 52 4.40
86 86 5.10
104 104 5.80
102 102 6.20
58 58 6.10
31 31 5.80
3 3 5.30
0 0 5.30
0 0 5.30
0 0 5.20
0 0 5.40
0 0 5.50
0 0 5.50
0 0 5.60
0 0 5.50
0 0 5.50
0 0 5.40
0 0 5.40
0 0 5.30
0 0 5.30
0 0 5.40
0 0 5.40
3 3 5.50
11 11 5.70
20 20 5.80
26 26 6.00
29 29 6.10
27 27 6.30
20 20 6.30
11 11 6.10
3 3 6.00
0 0 5.90
0 0 5.70
0 0 5.60
0 0 5.40
0 0 5.30
0 0 5.30
0 0 4.80
0 0 4.70
0 0 4.00
0 0 3.50
0 0 3.10
0 0 2.80
0 0 2.50
0 0 2.30
0 0 2.00
4 4 2.10
51 51 2.70
81 81 3.10
135 131 3.70
140 135 4.00
69 69 3.90
77 77 3.80
25 25 3.50
3 3 3.10
0 0 2.60
0 0 2.10
0 0 1.70
0 0 1.20
0 0 0.70
0 0 0.20
0 0 -0.20
0 0 -1.30
0 0 -2.40
0 0 -3.50
0 0 -4.20
0 0 -4.80
0 0 -5.40
0 0 -5.90
0 0 -6.30
10 10 -6.10
114 58 -4.30
243 79 -2.20
291 65 -0.80
315 69 0.20
289 81 0.60
245 59 0.70
131 52 -0.10
13 13 -1.50
0 0 -2.00
0 0 -2.40
0 0 -2.90
0 0 -3.30
0 0 -3.80
0 0 -4.30
0 0 -4.70
0 0 -4.70
0 0 -4.70
0 0 -4.60
0 0 -4.60
0 0 -4.50
0 0 -4.50
0 0 -4.40
0 0 -4.40
2 2 -4.20
24 24 -3.60
35 35 -3.10
129 126 -1.70
137 133 -0.70
313 118 1.60
233 65 2.60
179 83 3.00
11 11 1.80
0 0 1.80
0 0 1.70
0 0 1.70
0 0 1.70
0 0 1.60
0 0 1.60
0 0 1.50
0 0 1.30
0 0 1.10
0 0 0.90
0 0 0.80
0 0 0.70
0 0 0.60
0 0 0.60
0 0 0.50
10 10 1.00
107 65 3.40
208 78 5.80
244 116 7.60
246 150 8.70
321 96 10.10
276 55 10.70
174 45 10.40
24 23 8.70
0 0 8.40
0 0 8.00
0 0 7.60
0 0 7.30
0 0 6.90
0 0 6.50
0 0 6.10
0 0 5.70
0 0 5.30
0 0 4.90
0 0 4.60
0 0 4.40
0 0 4.20
0 0 4.00
0 0 3.80
3 3 3.90
23 23 4.10
43 43 4.30
56 56 4.40
57 57 4.40
51 51 4.20
40 40 4.50
29 29 4.40
5 5 4.20
0 0 3.90
0 0 3.60
0 0 3.30
0 0 3.00
0 0 2.70
0 0 2.40
0 0 2.20
0 0 1.40
0 0 0.50
0 0 -0.30
0 0 -0.80
0 0 -1.30
0 0 -1.70
0 0 -2.10
0 0 -2.40
16 16 -1.80
137 54 0.70
216 81 2.60
280 101 4.20
352 73 5.70
337 55 6.70
280 46 7.00
170 39 6.30
55 25 4.90
0 0 3.30
0 0 3.00
0 0 2.70
0 0 2.50
0 0 2.20
0 0 1.90
0 0 1.60
0 0 1.60
0 0 1.60
0 0 1.70
0 0 1.70
0 0 1.80
0 0 1.80
0 0 1.90
0 0 1.90
3 3 2.10
12 12 2.40
21 21 2.70
27 27 3.00
30 30 3.20
224 150 5.10
179 142 6.20
110 89 6.50
36 28 6.10
0 0 5.50
0 0 5.40
0 0 5.30
0 0 5.20
0 0 5.10
0 0 5.00
0 0 4.80
0 0 4.60
0 0 4.30
0 0 4.00
0 0 3.80
0 0 3.70
0 0 3.50
0 0 3.40
0 0 3.30
4 4 3.40
13 13 3.60
21 21 3.80
31 31 4.00
31 31 4.10
221 154 5.60
177 143 6.40
110 91 6.60
38 29 6.20
0 0 5.60
0 0 5.60
0 0 5.60
0 0 5.70
0 0 5.60
0 0 5.70
0 0 5.70
0 0 5.80
0 0 5.90
0 0 6.00
0 0 6.00
0 0 6.10
0 0 6.20
0 0 6.30
0 0 6.30
9 9 6.80
46 46 7.90
83 83 9.00
111 111 10.00
89 89 10.30
101 101 10.70
88 88 10.80
50 50 10.60
17 17 10.00
0 0 9.40
0 0 9.20
0 0 9.20
0 0 9.10
0 0 9.00
0 0 8.90
0 0 8.80
0 0 8.50
0 0 8.10
0 0 8.00
0 0 7.90
0 0 7.80
0 0 7.70
0 0 7.60
0 0 7.60
11 11 7.70
39 39 8.00
73 73 8.40
91 91 8.80
101 101 9.10
92 92 9.20
65 65 9.20
35 35 9.10
17 17 8.90
0 0 8.70
0 0 8.40
0 0 8.10
0 0 7.80
0 0 7.60
0 0 7.30
0 0 7.00
0 0 6.80
0 0 6.50
0 0 6.20
0 0 6.10
0 0 6.00
0 0 5.90
0 0 5.80
0 0 5.80
13 13 6.00
35 35 6.30
60 60 6.60
78 78 6.90
95 95 7.20
93 93 7.40
69 69 7.40
37 37 7.30
15 15 7.10
0 0 6.90
0 0 6.60
0 0 6.30
0 0 6.00
0 0 5.80
0 0 5.10
0 0 5.10
0 0 4.90
0 0 4.50
0 0 4.10
0 0 3.90
0 0 3.40
0 0 3.60
0 0 3.40
0 0 3.40
17 17 3.60
53 53 3.90
76 76 4.20
86 86 4.40
99 99 4.60
83 83 4.70
62 62 4.60
45 45 4.60
18 18 4.40
0 0 4.20
0 0 3.80
0 0 3.50
0 0 3.20
0 0 2.80
0 0 2.50
0 0 2.10
0 0 1.50
0 0 0.60
0 0 -0.30
0 0 -0.90
0 0 -1.20
0 0 -1.60
0 0 -2.00
0 0 -2.10
6 6 -2.30
19 19 -2.50
33 33 -2.70
43 43 -3.00
47 47 -3.20
46 46 -3.40
38 38 -3.70
23 23 -3.10
9 9 -3.50
0 0 -3.00
0 0 -3.20
0 0 -3.20
0 0 -3.40
0 0 -3.50
0 0 -3.60
0 0 -3.80
0 0 -3.40
0 0 -2.90
0 0 -2.50
0 0 -2.20
0 0 -1.90
0 0 -1.70
0 0 -1.50
0 0 -1.40
33 31 -0.60
110 92 1.00
205 135 2.90
198 167 4.00
159 155 4.40
191 164 5.00
251 112 5.80
177 85 6.00
86 45 5.70
1 1 4.70
0 0 4.40
0 0 4.10
0 0 3.80
0 0 3.40
0 0 3.10
0 0 2.80
0 0 2.10
0 0 1.40
0 0 0.60
0 0 0.20
0 0 -0.20
0 0 -0.50
0 0 -0.70
0 0 -0.80
37 34 -0.40
104 91 0.40
187 149 1.30
246 189 2.10
255 202 2.70
238 191 3.10
196 154 3.20
121 101 2.90
47 42 2.30
0 0 1.70
0 0 1.30
0 0 1.00
0 0 0.60
0 0 0.30
0 0 -0.10
0 0 -0.40
0 0 -0.50
0 0 -0.60
0 0 -0.60
0 0 -0.60
0 0 -0.60
0 0 -0.60
0 0 -0.60
0 0 -0.50
52 34 0.50
151 73 2.10
245 115 3.70
305 135 5.20
324 148 6.30
312 126 7.10
245 113 7.40
150 87 7.10
57 46 6.10
0 0 5.20
0 0 4.60
0 0 4.00
0 0 3.40
0 0 2.80
0 0 2.20
0 0 1.50
0 0 0.70
0 0 -0.20
0 0 -1.10
0 0 -1.60
0 0 -2.00
0 0 -2.40
0 0 -2.70
0 0 -2.80
57 40 -2.10
126 94 -1.20
217 156 -0.20
250 191 0.50
303 165 1.30
301 141 1.80
255 116 2.00
147 110 1.70
56 48 1.00
1 1 0.20
0 0 -0.30
0 0 -0.80
0 0 -1.40
0 0 -1.90
0 0 -2.40
0 0 -3.00
0 0 -3.20
0 0 -3.50
0 0 -3.80
0 0 -4.00
0 0 -4.30
0 0 -4.30
0 0 -4.40
0 0 -4.40
6 6 -4.40
16 16 -4.30
26 26 -4.10
32 32 -4.00
35 35 -4.00
257 178 -2.90
211 166 -2.30
138 110 -2.10
59 50 -2.20
1 1 -2.60
0 0 -2.50
0 0 -2.30
0 0 -2.10
0 0 -1.90
0 0 -1.70
0 0 -1.60
0 0 -1.70
0 0 -1.40
0 0 -1.20
0 0 -1.30
0 0 -1.20
0 0 -1.00
0 0 -1.00
0 0 -0.90
8 8 -0.70
21 21 -0.40
31 31 -0.10
39 39 0.10
45 45 0.30
43 43 0.50
34 34 0.60
22 22 0.50
9 9 0.40
1 1 0.30
0 0 0.10
0 0 -0.70
0 0 -0.10
0 0 -0.20
0 0 -0.60
0 0 -0.30
0 0 -0.70
0 0 -1.20
0 0 -1.60
0 0 -1.90
0 0 -2.10
0 0 -2.20
0 0 -2.40
0 0 -2.40
55 42 -1.50
126 105 -0.50
212 162 0.80
248 200 1.70
274 217 2.50
283 209 3.10
238 173 3.40
162 124 3.30
69 56 2.70
1 1 1.80
0 0 1.30
0 0 0.80
0 0 0.30
0 0 -0.20
0 0 -0.70
0 0 -1.20
0 0 -1.70
0 0 -2.20
0 0 -2.70
0 0 -2.90
0 0 -3.20
0 0 -3.40
0 0 -3.60
0 0 -3.60
46 43 -3.00
109 103 -2.10
179 157 -1.20
204 189 -0.50
230 204 0.10
229 198 0.50
172 161 0.50
116 111 0.30
53 51 -0.20
1 1 -0.90
0 0 -1.00
0 0 -1.10
0 0 -1.10
0 0 -1.30
0 0 -1.30
0 0 -1.40
0 0 -1.20
0 0 -1.00
0 0 -0.80
0 0 -0.60
0 0 -0.40
0 0 -0.30
0 0 -0.20
0 0 0.00
60 50 1.20
151 113 2.90
259 126 4.90
323 152 6.70
308 221 7.80
304 165 8.70
250 140 9.00
158 121 8.70
70 59 7.90
1 1 6.80
0 0 5.90
0 0 5.10
0 0 4.30
0 0 3.50
0 0 2.70
0 0 1.90
0 0 0.40
0 0 -1.30
0 0 -2.90
0 0 -3.90
0 0 -4.90
0 0 -5.50
0 0 -6.20
1 1 -6.50
41 41 -6.70
97 96 -6.90
148 142 -7.10
181 173 -7.30
190 183 -7.50
194 185 -7.70
150 146 -7.90
110 107 -8.10
47 47 -8.40
1 1 -8.60
0 0 -9.10
0 0 -8.30
0 0 -8.30
0 0 -8.30
0 0 -8.30
0 0 -8.30
0 0 -8.30
0 0 -8.40
0 0 -8.40
0 0 -8.50
0 0 -8.60
0 0 -8.70
0 0 -8.80
1 1 -8.80
97 53 -7.50
213 65 -5.90
331 62 -4.20
401 73 -2.90
435 74 -1.80
401 83 -1.20
336 76 -1.00
234 57 -1.40
115 45 -2.30
4 4 -3.50
0 0 -3.60
0 0 -3.70
0 0 -3.80
0 0 -4.00
0 0 -4.10
0 0 -4.20
0 0 -3.90
0 0 -3.60
0 0 -3.20
0 0 -3.00
0 0 -2.80
0 0 -2.70
0 0 -2.50
3 3 -2.30
93 41 -0.50
210 79 1.80
199 163 2.80
266 212 4.00
264 213 4.80
317 190 5.70
280 161 6.20
102 102 5.50
59 58 4.60
2 2 3.60
0 0 3.50
0 0 3.30
0 0 3.20
0 0 3.00
0 0 2.90
0 0 2.70
0 0 2.20
0 0 1.80
0 0 1.30
0 0 1.00
0 0 0.80
0 0 0.60
0 0 0.50
4 4 0.60
114 43 2.40
233 58 4.40
401 100 6.90
432 114 8.60
314 208 9.00
262 216 9.10
228 184 8.90
197 109 8.60
106 49 7.70
2 2 6.50
0 0 5.60
0 0 4.80
0 0 4.00
0 0 3.20
0 0 2.40
0 0 1.60
0 0 0.80
0 0 -0.10
0 0 -0.90
0 0 -1.30
0 0 -1.80
0 0 -2.10
0 0 -2.40
3 3 -2.40
97 46 -1.20
283 79 0.80
418 90 2.70
426 120 3.80
358 209 4.30
200 189 3.80
148 146 3.10
122 118 2.50
67 64 1.70
2 2 0.80
0 0 0.60
0 0 0.50
0 0 0.40
0 0 0.20
0 0 0.10
0 0 0.00
0 0 0.00
0 0 0.30
0 0 0.40
0 0 0.50
0 0 0.60
0 0 0.70
0 0 0.80
1 1 0.90
16 16 1.30
23 23 1.60
34 34 1.80
41 41 2.10
44 44 2.30
341 204 4.30
292 152 5.60
211 112 6.20
105 62 6.20
4 4 5.50
0 0 5.50
0 0 5.50
0 0 5.50
0 0 5.60
0 0 5.60
0 0 5.60
0 0 5.40
0 0 5.20
0 0 5.00
0 0 4.90
0 0 4.80
0 0 4.70
0 0 4.60
1 1 4.70
28 28 5.10
60 60 5.60
86 86 6.00
101 101 6.40
110 110 6.70
105 105 6.90
81 81 7.00
55 55 6.70
27 27 6.50
1 1 6.20
0 0 5.90
0 0 5.80
0 0 5.70
0 0 5.50
0 0 4.90
0 0 5.00
0 0 5.00
0 0 4.90
0 0 4.80
0 0 4.70
0 0 4.70
0 0 4.70
0 0 4.70
3 3 4.80
72 64 6.20
163 131 8.00
245 190 9.70
259 213 10.90
378 204 12.40
373 161 13.60
335 118 14.20
251 75 14.40
145 66 13.80
11 11 12.50
0 0 11.90
0 0 11.40
0 0 10.90
0 0 10.30
0 0 9.80
0 0 9.30
0 0 8.60
0 0 8.00
0 0 7.40
0 0 7.10
0 0 6.90
0 0 6.70
0 0 6.50
4 4 6.70
54 54 7.50
136 124 8.70
235 183 10.00
385 176 11.80
401 194 13.10
486 154 14.40
306 168 14.70
224 117 14.60
149 81 14.10
12 12 13.10
0 0 12.10
0 0 11.10
0 0 10.10
0 0 9.20
0 0 8.20
0 0 7.20
0 0 5.90
0 0 4.70
0 0 3.50
0 0 2.80
0 0 2.10
0 0 1.70
0 0 1.20
4 4 1.20
105 57 2.60
231 90 4.30
339 120 5.90
446 104 7.60
434 169 8.60
470 95 9.40
405 82 9.80
244 109 9.30
136 52 8.40
10 10 6.90
0 0 6.10
0 0 5.30
0 0 4.50
0 0 3.70
0 0 3.00
0 0 2.20
0 0 1.80
0 0 1.40
0 0 1.10
0 0 0.90
0 0 0.70
0 0 0.60
0 0 0.50
6 6 0.70
112 57 2.60
234 93 4.80
312 144 6.60
377 178 8.30
448 133 9.80
426 132 10.80
411 83 11.50
295 66 11.50
142 61 10.60
10 10 9.00
0 0 8.10
0 0 7.30
0 0 6.40
0 0 5.50
0 0 4.70
0 0 3.90
0 0 3.00
0 0 2.10
0 0 1.20
0 0 0.70
0 0 0.20
0 0 -0.10
0 0 -0.50
7 7 -0.30
146 45 2.00
292 56 4.30
417 57 6.50
498 54 8.50
522 74 9.90
481 75 10.60
409 61 10.90
295 60 10.50
156 49 9.30
12 12 7.60
0 0 6.60
0 0 5.60
0 0 4.70
0 0 3.80
0 0 2.90
0 0 2.00
0 0 1.30
0 0 0.50
0 0 -0.30
0 0 -0.70
0 0 -1.20
0 0 -1.50
0 0 -1.80
7 7 -1.60
78 73 -0.50
169 138 0.80
293 192 2.50
371 188 4.00
377 210 5.00
383 193 5.80
349 163 6.10
312 93 6.30
143 68 5.50
21 21 4.30
0 0 4.00
0 0 3.80
0 0 3.60
0 0 3.40
0 0 3.10
0 0 2.90
0 0 3.00
0 0 3.20
0 0 3.40
0 0 3.50
0 0 3.60
0 0 3.70
0 0 3.80
2 2 3.90
12 12 4.20
25 25 4.50
34 34 4.80
41 41 5.10
43 43 5.10
333 229 7.40
283 221 8.70
210 162 9.40
112 89 9.50
11 11 8.80
0 0 8.60
0 0 8.50
0 0 8.30
0 0 8.20
0 0 8.00
0 0 7.90
0 0 7.50
0 0 7.10
0 0 6.70
0 0 6.50
0 0 6.30
0 0 6.10
0 0 6.00
2 2 6.10
11 11 6.30
22 22 6.50
31 31 6.60
37 37 6.80
42 42 6.90
316 234 8.40
252 214 9.30
191 158 9.70
132 81 9.80
17 17 9.30
0 0 8.70
0 0 8.10
0 0 7.50
0 0 6.70
0 0 6.40
0 0 5.70
0 0 5.10
0 0 4.50
0 0 3.90
0 0 3.50
0 0 3.20
0 0 2.90
0 0 2.70
6 6 2.80
62 62 3.50
106 106 4.00
160 158 4.60
134 134 4.80
309 246 5.70
384 224 6.60
373 163 7.30
315 73 7.60
169 60 7.40
22 22 6.60
0 0 6.00
0 0 5.50
0 0 4.90
0 0 4.40
0 0 3.80
0 0 3.30
0 0 2.90
0 0 2.50
0 0 2.10
0 0 1.90
0 0 1.70
0 0 1.60
0 0 1.40
8 8 1.60
89 79 2.70
280 122 4.80
345 179 6.30
351 245 7.30
272 247 7.60
298 244 7.90
348 186 8.30
200 152 8.00
192 98 7.70
26 26 6.80
0 0 5.90
0 0 5.00
0 0 4.20
0 0 3.30
0 0 2.50
0 0 1.60
0 0 0.80
0 0 0.00
0 0 -0.90
0 0 -1.40
0 0 -1.80
0 0 -2.20
0 0 -2.50
12 12 -2.30
142 69 -0.80
237 142 0.40
380 160 1.90
484 127 3.20
522 99 4.20
487 110 4.80
394 157 5.00
244 149 4.50
151 75 3.80
26 26 2.70
0 0 1.90
0 0 1.20
0 0 0.50
0 0 -0.30
0 0 -1.00
0 0 -1.70
0 0 -2.30
0 0 -2.80
0 0 -3.40
0 0 -3.60
0 0 -3.90
0 0 -4.10
0 0 -4.30
18 18 -3.90
182 46 -1.70
325 57 0.20
442 63 2.00
517 71 3.40
554 81 4.50
516 78 5.20
449 65 5.40
329 65 5.20
189 53 4.30
58 36 3.10
0 0 1.80
0 0 1.20
0 0 0.60
0 0 0.10
0 0 -0.50
0 0 -1.10
0 0 -1.50
0 0 -2.00
0 0 -2.50
0 0 -2.70
0 0 -3.00
0 0 -3.20
0 0 -3.30
20 20 -2.80
181 50 -0.60
310 82 1.30
417 101 3.00
490 117 4.40
537 99 5.50
499 133 6.30
460 71 6.60
338 62 6.50
195 56 5.60
61 37 4.30
0 0 3.00
0 0 2.60
0 0 2.20
0 0 1.80
0 0 1.40
0 0 1.00
0 0 0.70
0 0 0.40
0 0 0.10
0 0 0.00
0 0 -0.10
0 0 -0.20
0 0 -0.30
14 14 0.10
116 101 1.60
204 171 3.00
245 218 3.90
283 251 4.80
352 272 5.60
397 243 6.50
393 179 7.20
371 101 7.60
207 59 7.30
57 32 6.30
0 0 5.30
0 0 4.60
0 0 4.00
0 0 3.40
0 0 2.70
0 0 2.10
0 0 1.30
0 0 0.50
0 0 -0.30
0 0 -0.80
0 0 -1.20
0 0 -1.50
0 0 -1.50
34 31 -1.00
195 80 0.70
375 104 2.90
407 163 4.40
431 209 5.50
437 233 6.30
382 282 6.70
350 197 6.90
306 132 6.90
166 84 6.30
49 36 5.20
0 0 4.20
0 0 3.20
0 0 2.30
0 0 1.30
0 0 0.30
0 0 -0.60
0 0 -1.40
0 0 -2.30
0 0 -3.30
0 0 -3.80
0 0 -4.30
0 0 -4.70
0 0 -4.90
59 32 -4.40
192 63 -3.30
334 75 -2.00
458 80 -0.80
511 119 0.20
518 137 0.90
491 137 1.30
441 108 1.50
314 114 1.20
165 94 0.50
59 35 -0.50
0 0 -1.50
0 0 -2.20
0 0 -2.90
0 0 -3.70
0 0 -4.40
0 0 -5.10
0 0 -5.20
0 0 -5.30
0 0 -5.40
0 0 -5.50
0 0 -5.60
0 0 -5.70
0 0 -5.80
77 28 -4.80
234 44 -3.00
391 52 -1.10
519 57 0.80
600 63 2.40
629 64 3.60
602 62 4.40
523 56 4.70
396 51 4.70
240 43 3.90
83 30 2.60
0 0 1.20
0 0 0.60
0 0 0.00
0 0 -0.70
0 0 -1.30
0 0 -2.00
0 0 -2.20
0 0 -2.50
0 0 -2.70
0 0 -2.80
0 0 -3.00
0 0 -3.00
0 0 -3.00
70 42 -1.80
186 84 -0.10
278 148 1.50
328 233 2.80
459 208 4.40
495 204 5.70
530 138 6.90
480 102 7.70
339 109 7.80
218 59 7.30
82 46 6.10
0 0 4.80
0 0 4.20
0 0 3.50
0 0 2.90
0 0 2.20
0 0 1.60
0 0 0.90
0 0 0.10
0 0 -0.60
0 0 -1.00
0 0 -1.40
0 0 -1.60
0 0 -1.70
75 36 -0.50
219 50 1.30
374 60 3.40
478 77 5.30
550 91 7.00
578 102 8.40
527 129 9.20
469 98 9.60
346 95 9.40
211 65 8.60
76 37 7.30
0 0 5.90
0 0 5.10
0 0 4.30
0 0 3.50
0 0 2.70
0 0 1.90
0 0 1.20
0 0 0.60
0 0 -0.10
0 0 -0.40
0 0 -0.70
0 0 -1.00
0 0 -1.00
79 46 0.10
193 91 1.60
279 168 3.00
305 239 3.90
243 206 4.20
656 273 6.20
495 197 7.10
380 231 7.50
180 168 6.90
120 111 6.00
63 47 5.20
1 1 4.30
0 0 3.70
0 0 3.10
0 0 2.50
0 0 1.90
0 0 1.30
0 0 0.80
0 0 0.20
0 0 -0.40
0 0 -0.70
0 0 -1.00
0 0 -1.20
0 0 -1.20
86 49 0.10
198 93 1.70
318 141 3.40
421 181 5.10
473 208 6.60
530 167 7.90
526 147 8.90
455 139 9.30
341 110 9.30
217 68 8.60
87 50 7.50
1 1 6.00
0 0 5.70
0 0 5.40
0 0 5.10
0 0 4.80
0 0 4.50
0 0 4.40
0 0 4.40
0 0 4.30
0 0 4.20
0 0 4.10
0 0 3.80
0 0 4.10
14 14 4.30
43 43 4.80
67 67 5.20
78 78 5.50
86 86 5.70
93 93 5.90
91 91 6.00
78 78 6.00
63 63 6.10
38 38 6.00
13 13 5.80
0 0 5.40
0 0 4.60
0 0 5.20
0 0 5.00
0 0 5.10
0 0 5.10
0 0 5.00
0 0 4.90
0 0 5.10
0 0 5.10
0 0 5.10
0 0 5.10
0 0 5.10
17 17 5.50
41 41 5.90
68 68 6.30
83 83 6.70
101 101 7.10
103 103 7.40
104 104 7.60
98 98 7.70
76 76 7.70
48 48 7.60
16 16 7.40
1 1 7.10
0 0 6.80
0 0 6.50
0 0 6.10
0 0 5.60
0 0 4.90
0 0 5.00
0 0 4.50
0 0 4.20
0 0 4.00
0 0 3.80
0 0 3.70
1 1 3.70
30 30 4.10
61 61 4.60
74 74 5.00
147 147 5.60
254 239 6.80
388 290 8.20
263 246 8.80
267 242 9.20
284 182 9.60
276 82 9.90
109 40 9.50
4 4 8.70
0 0 8.50
0 0 8.30
0 0 8.10
0 0 7.90
0 0 7.70
0 0 7.60
0 0 7.50
0 0 7.40
0 0 7.40
0 0 7.30
0 0 7.30
1 1 7.40
78 52 8.90
186 135 10.70
302 168 12.80
396 225 14.80
441 257 16.30
479 263 17.50
456 247 18.40
379 279 18.80
291 214 18.70
190 109 18.10
70 59 17.00
1 1 15.70
0 0 14.60
0 0 13.40
0 0 12.20
0 0 11.00
0 0 9.90
0 0 8.60
0 0 7.20
0 0 5.80
0 0 5.20
0 0 4.50
0 0 4.00
2 2 4.00
94 46 5.20
215 98 6.80
358 137 8.60
429 197 10.10
496 224 11.40
541 199 12.50
518 199 13.20
454 185 13.60
338 144 13.40
203 105 12.70
83 55 11.50
1 1 10.20
0 0 9.30
0 0 8.40
0 0 7.50
0 0 6.50
0 0 5.60
0 0 5.10
0 0 4.70
0 0 4.20
0 0 4.00
0 0 3.70
0 0 3.50
3 3 3.60
49 49 4.40
62 62 4.80
205 182 6.20
405 243 8.60
475 256 10.50
444 293 11.70
331 281 12.10
285 255 12.30
247 194 12.30
266 110 12.30
131 46 11.70
4 4 10.60
0 0 9.40
0 0 8.30
0 0 7.20
0 0 6.00
0 0 5.00
0 0 4.00
0 0 2.90
0 0 1.80
0 0 1.20
0 0 0.60
0 0 0.20
3 3 0.20
104 59 1.60
246 102 3.50
376 140 5.40
484 164 7.20
563 150 8.80
597 150 10.10
581 138 11.00
527 117 11.50
364 139 11.30
236 88 10.50
107 47 9.20
2 2 7.70
0 0 7.00
0 0 6.20
0 0 5.50
0 0 4.80
0 0 4.10
0 0 3.80
0 0 3.50
0 0 3.20
0 0 3.00
0 0 2.80
0 0 2.60
1 1 2.70
64 61 3.70
143 137 4.80
224 205 6.10
286 265 7.30
298 279 8.20
288 274 8.70
291 271 9.10
252 240 9.30
223 200 9.30
157 136 9.00
65 60 8.30
2 2 7.40
0 0 7.10
0 0 6.50
0 0 6.30
0 0 6.00
0 0 5.60
0 0 5.40
0 0 5.30
0 0 5.00
0 0 5.00
0 0 5.00
0 0 4.90
8 8 5.20
95 67 6.90
74 74 7.20
37 37 7.00
373 262 9.40
300 275 10.50
307 282 11.40
515 255 13.00
470 213 14.10
275 202 14.20
248 100 14.30
92 59 13.50
5 5 12.40
0 0 11.60
0 0 10.80
0 0 10.00
0 0 9.30
0 0 8.50
0 0 7.60
0 0 6.70
0 0 5.70
0 0 5.20
0 0 4.70
0 0 4.30
3 3 4.30
70 68 5.10
169 147 6.40
228 212 7.50
289 264 8.40
313 291 9.10
339 308 9.70
325 295 10.10
273 254 10.20
216 203 10.10
125 122 9.50
58 58 8.80
2 2 8.00
0 0 7.60
0 0 7.10
0 0 6.70
0 0 6.30
0 0 5.90
0 0 5.80
0 0 5.80
0 0 5.80
0 0 5.80
0 0 5.80
0 0 5.80
2 2 5.90
27 27 6.50
58 58 7.10
148 148 8.20
175 174 9.10
134 134 9.50
170 170 10.00
198 196 10.40
198 195 10.80
175 171 11.10
125 122 11.00
77 66 10.50
3 3 10.10
0 0 9.50
0 0 8.80
0 0 8.20
0 0 7.50
0 0 6.80
0 0 6.00
0 0 5.10
0 0 4.30
0 0 3.80
0 0 3.40
0 0 3.10
12 12 3.40
93 76 4.50
246 122 6.50
362 198 8.40
632 191 11.30
453 290 12.20
385 318 12.50
361 301 12.60
265 231 12.20
356 189 12.30
219 121 11.80
90 73 10.70
2 2 9.40
0 0 8.70
0 0 8.10
0 0 7.50
0 0 6.90
0 0 6.30
0 0 6.00
0 0 5.80
0 0 5.60
0 0 5.50
0 0 5.40
0 0 5.30
2 2 5.30
31 31 5.80
69 69 6.40
96 96 6.90
120 120 7.30
143 143 7.70
156 156 8.10
151 151 8.30
129 129 8.00
96 96 8.40
66 66 8.20
36 36 7.90
1 1 7.40
0 0 7.40
0 0 7.40
0 0 7.30
0 0 7.20
0 0 7.00
0 0 7.30
0 0 7.40
0 0 7.50
0 0 7.60
0 0 7.60
0 0 7.60
3 3 7.80
50 50 8.70
97 97 9.60
150 150 10.60
183 181 11.40
199 196 12.10
208 204 12.70
200 197 12.60
174 173 13.10
138 138 13.20
94 94 12.90
41 41 12.50
2 2 11.90
0 0 11.30
0 0 10.70
0 0 10.10
0 0 9.50
0 0 8.90
0 0 8.10
0 0 7.40
0 0 6.60
0 0 6.20
0 0 5.80
0 0 5.60
5 5 5.70
78 75 6.80
239 148 8.70
529 138 11.90
676 148 14.70
598 211 16.00
495 315 16.60
433 319 16.80
364 271 16.70
213 200 15.80
119 119 14.70
12 12 13.30
2 2 12.10
0 0 11.30
0 0 10.50
0 0 9.80
0 0 9.00
0 0 8.20
0 0 7.50
0 0 6.80
0 0 6.10
0 0 5.70
0 0 5.30
0 0 5.10
6 6 5.20
122 86 6.90
278 136 8.90
288 227 10.00
240 223 10.30
490 310 11.80
469 326 12.70
361 308 13.00
330 266 13.10
36 36 11.80
112 112 11.10
73 71 10.40
4 4 9.50
0 0 9.10
0 0 8.70
0 0 8.20
0 0 7.80
0 0 7.30
0 0 7.10
0 0 6.90
0 0 6.60
0 0 6.40
0 0 6.00
0 0 6.00
7 7 6.40
80 80 7.60
149 145 8.80
234 221 10.10
281 263 11.20
317 299 12.10
300 287 12.70
299 282 13.10
258 246 13.30
191 186 13.10
122 122 12.60
56 56 11.90
2 2 11.00
0 0 10.70
0 0 10.30
0 0 9.90
0 0 9.50
0 0 9.10
0 0 8.80
0 0 8.60
0 0 8.30
0 0 8.10
0 0 8.00
0 0 7.90
4 4 8.00
88 83 9.40
251 166 11.60
351 258 13.50
358 290 14.80
418 322 15.80
286 272 16.00
242 236 16.00
257 241 16.00
145 145 15.50
83 83 14.80
65 65 14.00
3 3 13.10
0 0 11.90
0 0 11.20
0 0 10.30
0 0 9.30
0 0 8.30
0 0 7.30
0 0 6.30
0 0 5.30
0 0 4.70
0 0 4.20
0 0 3.80
18 18 4.20
96 90 5.10
122 122 5.50
289 234 6.80
154 154 6.90
343 309 7.70
426 330 8.50
645 226 9.90
536 190 10.60
559 137 11.20
381 67 11.30
190 46 10.70
14 14 9.70
0 0 8.90
0 0 8.20
0 0 7.50
0 0 6.80
0 0 6.00
0 0 5.60
0 0 5.20
0 0 4.80
0 0 4.60
0 0 4.40
0 0 4.20
25 25 4.90
196 91 7.00
287 152 8.60
406 217 10.10
303 258 10.50
420 334 11.20
455 348 11.90
539 313 12.60
288 248 12.40
316 236 12.40
181 159 11.80
103 87 11.00
3 3 10.00
0 0 8.90
0 0 7.70
0 0 6.50
0 0 5.30
0 0 4.20
0 0 3.20
0 0 1.90
0 0 0.60
0 0 -0.10
0 0 -0.90
0 0 -1.40
23 23 -1.20
208 45 0.50
378 51 2.00
524 62 3.40
640 75 4.60
705 91 5.60
731 89 6.30
689 97 6.70
612 81 6.80
489 67 6.50
337 57 5.70
173 44 4.70
11 11 3.30
0 0 2.90
0 0 2.40
0 0 2.00
0 0 1.60
0 0 1.10
0 0 1.80
0 0 2.50
0 0 2.90
0 0 3.40
0 0 3.70
0 0 3.80
28 28 4.30
112 99 5.40
125 125 6.10
377 237 8.30
563 206 10.70
700 149 13.10
673 231 14.90
542 306 15.70
508 247 16.30
304 232 16.10
129 128 15.20
27 27 14.00
7 7 12.80
0 0 12.70
0 0 12.60
0 0 12.50
0 0 12.40
0 0 12.30
0 0 11.70
0 0 11.10
0 0 10.80
0 0 10.50
0 0 10.30
0 0 10.30
6 6 10.40
184 97 12.00
327 118 13.70
493 118 15.60
590 205 17.20
513 325 18.10
524 348 18.80
549 294 19.40
452 283 19.60
301 234 19.40
69 69 18.40
44 44 17.40
4 4 16.50
0 0 15.50
0 0 14.60
0 0 13.60
0 0 12.60
0 0 11.60
0 0 10.60
0 0 9.60
0 0 9.00
0 0 8.40
0 0 8.00
0 0 8.00
66 34 8.80
211 62 10.40
375 70 12.30
524 81 14.30
633 103 16.10
701 119 17.50
725 115 18.70
686 122 19.40
603 111 19.80
486 86 19.80
330 80 19.30
169 57 18.20
15 15 16.80
0 0 15.90
0 0 14.90
0 0 13.90
0 0 12.80
0 0 11.80
0 0 11.20
0 0 10.60
0 0 10.20
0 0 9.80
0 0 9.50
0 0 9.40
66 33 10.40
208 64 12.20
363 94 14.40
497 123 16.40
588 178 18.20
658 191 19.80
680 194 21.00
672 163 21.90
603 118 22.40
481 99 22.50
331 84 21.90
176 57 20.80
16 16 19.20
0 0 18.00
0 0 16.70
0 0 15.40
0 0 14.10
0 0 12.70
0 0 11.80
0 0 10.90
0 0 10.40
0 0 9.90
0 0 9.50
0 0 9.50
68 36 10.40
198 78 11.90
351 114 13.70
495 148 15.50
595 179 17.20
661 195 18.60
671 221 19.60
652 188 20.40
575 168 20.80
472 117 20.80
330 93 20.40
175 70 19.40
22 22 18.10
0 0 17.10
0 0 16.10
0 0 15.10
0 0 14.00
0 0 12.90
0 0 12.20
0 0 11.50
0 0 11.10
0 0 10.70
0 0 10.50
0 0 10.40
7 7 10.50
101 99 11.20
50 50 11.40
154 154 12.00
170 170 12.50
227 214 13.00
493 349 14.40
664 258 15.80
480 286 16.50
447 207 17.00
192 167 16.70
102 97 16.20
5 5 15.40
0 0 15.20
0 0 15.00
0 0 14.80
0 0 14.60
0 0 14.40
0 0 14.30
0 0 13.80
0 0 14.20
0 0 14.20
0 0 14.20
1 1 14.20
46 43 14.90
141 117 16.00
154 151 16.70
73 73 16.70
56 56 16.60
206 197 17.10
406 345 18.20
457 352 19.30
407 301 19.90
224 208 20.00
79 79 19.60
58 58 19.10
8 8 18.50
0 0 18.10
0 0 17.90
0 0 17.60
0 0 17.30
0 0 16.90
0 0 16.50
0 0 16.10
0 0 15.90
0 0 15.70
0 0 15.60
1 1 15.60
60 47 16.30
198 116 17.70
156 153 18.10
289 264 19.00
327 304 19.70
311 293 20.20
422 352 20.90
287 274 21.10
236 230 21.10
123 123 20.70
32 32 20.10
36 36 19.50
26 26 19.00
0 0 18.30
0 0 17.60
0 0 16.70
0 0 15.80
0 0 14.80
0 0 13.60
0 0 12.10
0 0 11.50
0 0 10.80
0 0 10.30
1 1 10.30
67 49 11.10
107 106 11.60
195 186 12.50
278 251 13.30
134 134 13.30
227 220 13.60
146 146 13.50
422 335 14.30
692 194 15.50
434 232 15.90
460 186 16.30
189 73 16.00
76 44 15.40
0 0 14.60
0 0 13.40
0 0 12.20
0 0 11.00
0 0 9.90
0 0 9.10
0 0 8.20
0 0 7.80
0 0 7.30
0 0 6.90
2 2 6.90
124 40 8.50
318 74 10.80
518 98 13.30
672 104 15.60
781 212 17.50
507 347 17.80
452 370 17.80
430 351 17.80
427 314 17.70
354 280 17.40
224 188 16.60
120 105 15.50
40 32 14.40
0 0 13.10
0 0 11.80
0 0 10.60
0 0 9.30
0 0 8.00
0 0 7.20
0 0 6.30
0 0 5.80
0 0 5.30
0 0 5.00
1 1 5.00
102 39 6.40
262 57 8.40
431 62 10.60
581 73 12.70
695 87 14.80
763 97 16.40
783 98 17.60
743 99 18.50
653 96 18.90
527 82 18.90
371 72 18.30
203 63 17.10
62 39 15.70
0 0 14.20
0 0 13.00
0 0 11.70
0 0 10.50
0 0 9.30
0 0 8.40
0 0 7.50
0 0 7.10
0 0 6.60
0 0 6.20
1 1 6.20
65 52 7.00
279 107 9.10
393 146 11.00
457 237 12.40
534 297 13.60
511 360 14.50
613 361 15.30
322 289 15.10
348 298 15.00
217 206 14.50
262 187 14.10
150 120 13.40
44 38 12.40
0 0 11.40
0 0 10.20
0 0 9.00
0 0 7.70
0 0 6.50
0 0 5.60
0 0 4.70
0 0 4.20
0 0 3.60
0 0 3.30
2 2 3.20
91 49 4.40
238 87 6.00
400 108 8.00
513 180 9.90
659 187 11.70
693 213 13.20
680 247 14.20
677 207 15.00
590 198 15.30
473 177 15.30
339 119 14.70
179 85 13.60
53 37 12.20
0 0 10.80
0 0 10.20
0 0 9.60
0 0 9.00
0 0 8.40
0 0 8.30
0 0 8.30
0 0 8.30
0 0 8.30
0 0 8.30
2 2 8.40
10 10 8.50
24 24 8.50
120 120 9.70
149 149 10.40
283 269 11.60
274 266 12.40
313 300 12.60
382 343 14.00
285 272 14.40
263 243 14.70
111 111 14.40
72 72 13.90
11 11 13.30
0 0 12.80
0 0 11.90
0 0 10.70
0 0 9.90
0 0 8.90
0 0 7.70
0 0 6.40
0 0 5.60
0 0 5.00
0 0 4.50
2 2 4.40
86 62 5.30
236 130 6.80
96 96 6.60
277 242 7.40
73 73 7.00
486 363 8.20
402 367 8.70
426 352 9.20
538 303 9.90
276 252 9.80
219 192 9.60
104 99 9.00
7 7 8.00
0 0 7.50
0 0 6.60
0 0 5.60
0 0 4.70
0 0 3.80
0 0 3.40
0 0 3.00
0 0 2.70
0 0 2.50
0 0 2.10
1 1 2.40
114 82 3.70
112 112 4.10
412 168 6.00
544 181 7.90
412 328 8.60
169 165 8.20
447 354 8.80
107 107 8.00
252 243 8.00
197 193 7.80
45 45 7.00
17 17 6.30
6 6 5.70
0 0 5.10
0 0 4.60
0 0 4.10
0 0 3.50
0 0 3.00
0 0 2.50
0 0 2.00
0 0 1.70
0 0 1.40
0 0 1.20
4 4 1.30
90 74 2.50
201 152 4.00
339 193 5.70
438 285 7.40
448 348 8.60
501 364 9.70
548 366 10.60
526 370 11.30
517 296 11.80
439 219 12.00
345 138 11.80
220 95 11.20
93 47 10.10
1 1 8.90
0 0 7.60
0 0 6.30
0 0 5.10
0 0 3.90
0 0 3.00
0 0 1.90
0 0 1.40
0 0 0.80
0 0 0.40
5 5 0.40
105 64 1.60
230 120 3.10
376 172 4.80
505 229 6.50
594 272 8.00
673 258 9.40
675 255 10.40
637 284 11.10
567 248 11.40
430 229 11.30
314 169 10.70
180 108 9.70
62 45 8.40
0 0 7.00
0 0 6.50
0 0 5.90
0 0 5.40
0 0 5.00
0 0 5.00
0 0 5.10
0 0 5.10
0 0 5.20
0 0 5.20
2 2 5.20
53 53 6.00
67 67 6.20
40 40 6.60
106 106 7.20
296 281 8.60
210 207 9.20
377 348 10.40
302 291 11.00
233 226 11.30
334 262 11.80
251 210 12.00
149 125 11.80
61 46 11.30
0 0 10.60
0 0 10.30
0 0 10.00
0 0 9.60
0 0 9.30
0 0 8.90
0 0 8.20
0 0 8.30
0 0 8.10
0 0 8.00
2 2 8.00
20 20 8.30
79 79 8.90
144 144 9.70
189 187 10.40
180 178 10.80
301 290 11.50
309 298 12.10
367 344 12.70
279 265 12.90
133 133 12.00
129 129 12.60
43 43 12.20
14 14 11.50
0 0 11.20
0 0 10.20
0 0 8.90
0 0 8.40
0 0 7.40
0 0 6.10
0 0 4.70
0 0 4.00
0 0 3.20
0 0 2.70
6 6 2.70
86 73 3.70
261 128 5.50
367 193 7.10
474 265 8.60
540 330 9.90
650 299 11.30
599 361 12.00
585 339 12.60
474 326 12.70
472 229 12.70
390 116 12.50
245 58 11.80
86 40 10.60
1 1 9.30
0 0 8.00
0 0 6.70
0 0 5.40
0 0 4.10
0 0 3.60
0 0 2.90
0 0 2.60
0 0 2.20
0 0 2.00
9 9 2.20
164 38 4.30
342 46 6.80
519 52 9.40
672 65 11.90
785 76 14.10
855 85 15.90
869 87 17.30
830 82 18.20
743 72 18.70
612 59 18.70
447 48 18.10
269 45 16.90
104 36 15.20
1 1 13.40
0 0 11.90
0 0 10.30
0 0 8.80
0 0 7.30
0 0 6.20
0 0 5.00
0 0 4.40
0 0 3.80
0 0 3.30
11 11 3.50
142 64 5.20
295 99 7.20
438 145 9.20
571 172 11.10
662 225 12.80
717 221 14.20
741 242 15.30
751 176 16.10
671 142 16.50
553 111 16.60
395 104 16.00
239 73 15.00
92 41 13.50
1 1 12.00
0 0 10.60
0 0 9.30
0 0 8.00
0 0 6.60
0 0 5.80
0 0 5.10
0 0 4.70
0 0 4.30
0 0 4.00
12 12 4.20
144 58 6.10
305 86 8.30
465 102 10.60
600 136 12.70
707 159 14.70
770 176 16.30
789 172 17.50
759 157 18.40
687 124 18.80
560 117 18.80
403 97 18.30
243 71 17.20
97 46 15.70
2 2 14.10
0 0 12.50
0 0 10.80
0 0 9.20
0 0 7.60
0 0 6.30
0 0 5.00
0 0 4.30
0 0 3.60
0 0 3.10
13 13 3.40
143 61 4.90
314 86 7.00
464 109 9.00
575 168 10.80
682 215 12.40
688 278 13.60
691 272 14.40
660 260 15.00
585 261 15.20
461 240 15.00
309 225 14.20
169 137 13.10
76 62 11.70
1 1 10.30
0 0 8.60
0 0 6.90
0 0 5.20
0 0 3.60
0 0 2.50
0 0 1.30
0 0 0.70
0 0 0.00
0 0 -0.40
12 12 -0.20
121 91 1.10
253 138 2.60
379 215 4.20
496 272 5.70
562 329 7.00
626 351 8.20
667 332 9.20
605 344 9.70
530 310 9.90
424 275 9.80
307 226 9.30
163 136 8.30
63 57 7.00
1 1 5.70
0 0 4.60
0 0 3.50
0 0 2.40
0 0 1.30
0 0 0.70
0 0 0.00
0 0 -0.40
0 0 -0.80
0 0 -1.10
12 12 -0.90
115 96 0.40
223 178 1.70
323 263 3.00
386 310 4.10
492 368 5.30
546 381 6.40
519 391 7.00
470 371 7.40
418 341 7.50
317 271 7.20
243 214 6.60
145 131 5.80
51 51 4.70
1 1 3.70
0 0 4.40
0 0 5.10
0 0 5.70
0 0 6.50
0 0 6.90
0 0 7.20
0 0 7.60
0 0 8.20
0 0 8.40
7 7 8.70
58 58 9.60
117 117 10.50
176 174 11.40
237 230 11.80
285 275 13.30
300 287 14.00
297 285 14.50
267 258 14.70
233 228 13.70
187 185 14.80
136 136 14.70
83 83 14.40
34 34 13.90
1 1 13.30
0 0 12.90
0 0 12.50
0 0 12.00
0 0 11.60
0 0 10.90
0 0 10.20
0 0 9.80
0 0 9.40
0 0 9.10
14 14 9.30
120 97 10.60
260 158 12.10
321 250 13.20
460 314 14.60
555 349 15.80
704 291 17.10
664 348 18.00
611 349 18.50
535 324 18.70
514 215 18.80
437 98 18.80
261 80 18.20
120 55 17.20
6 6 16.10
0 0 15.20
0 0 14.20
0 0 13.20
0 0 12.20
0 0 11.60
0 0 11.10
0 0 10.80
0 0 10.50
0 0 10.30
15 15 10.70
15 15 10.70
143 139 11.70
109 109 12.00
344 293 13.40
515 364 15.00
466 379 15.90
667 364 17.20
755 289 18.40
489 334 18.70
657 192 19.40
380 178 19.40
227 131 18.90
10 10 17.90
1 1 17.00
0 0 16.00
0 0 14.90
0 0 13.90
0 0 12.80
0 0 11.50
0 0 10.10
0 0 9.40
0 0 8.80
0 0 8.70
61 25 9.30
207 41 10.60
410 62 12.50
593 76 14.50
737 82 16.20
856 243 17.90
509 375 18.00
523 412 18.20
514 395 18.30
455 365 18.20
391 290 17.90
285 234 17.30
178 145 16.50
71 65 15.40
2 2 14.40
0 0 13.60
0 0 12.90
0 0 12.20
0 0 11.40
0 0 11.00
0 0 11.50
0 0 11.70
0 0 11.80
0 0 11.80
28 28 12.20
96 93 13.00
160 155 13.90
237 225 14.90
308 289 15.90
348 327 16.70
382 355 17.50
414 385 18.20
383 359 18.60
326 310 18.90
287 270 19.00
195 189 18.80
116 115 18.40
48 48 17.80
2 2 17.10
0 0 16.40
0 0 15.70
0 0 15.00
0 0 14.20
0 0 13.40
0 0 12.50
0 0 12.10
0 0 11.80
0 0 11.80
57 28 12.40
232 49 14.10
412 146 16.00
218 205 16.20
223 218 16.30
310 284 16.70
789 326 18.40
535 397 19.00
570 367 19.60
468 356 19.80
376 302 19.90
284 216 19.60
33 33 18.70
23 23 17.80
3 3 17.00
0 0 15.80
0 0 14.60
0 0 13.30
0 0 12.00
0 0 10.90
0 0 9.90
0 0 9.50
0 0 9.20
0 0 9.20
39 32 9.60
161 88 10.50
367 133 12.00
336 248 12.70
754 220 14.60
840 84 16.10
944 182 17.40
798 311 18.20
260 234 17.60
68 68 16.60
56 56 15.70
42 42 14.90
27 27 14.20
12 12 13.60
2 2 13.00
0 0 12.10
0 0 11.20
0 0 10.30
0 0 9.30
0 0 8.20
0 0 7.00
0 0 6.30
0 0 5.80
0 0 5.80
44 32 6.30
136 102 7.20
292 161 8.70
452 192 10.40
625 215 12.20
544 350 13.20
643 367 14.30
654 374 15.10
668 314 15.80
601 286 16.10
541 190 16.30
375 180 16.00
233 116 15.40
108 64 14.50
4 4 13.30
0 0 11.80
0 0 10.30
0 0 8.80
0 0 7.40
0 0 6.30
0 0 5.30
0 0 4.70
0 0 4.30
0 0 4.20
47 33 4.70
143 104 5.70
298 161 7.20
481 153 9.10
561 258 10.70
685 248 12.20
708 301 13.50
705 301 14.50
662 329 15.10
642 235 15.50
547 184 15.60
416 129 15.40
288 81 14.80
129 49 13.70
8 8 12.50
0 0 11.30
0 0 10.10
0 0 8.90
0 0 7.70
0 0 7.10
0 0 6.40
0 0 6.00
0 0 5.80
0 0 5.70
34 34 6.10
101 98 6.80
176 167 7.60
261 247 8.50
346 320 9.50
419 354 10.40
436 400 11.20
471 394 11.90
414 382 12.20
363 339 12.40
262 251 12.30
208 198 12.00
137 133 11.60
53 53 10.90
2 2 10.20
0 0 9.50
0 0 8.70
0 0 8.60
0 0 8.00
0 0 7.90
0 0 7.70
0 0 7.60
0 0 7.50
0 0 7.50
26 26 7.90
89 89 8.70
264 177 10.40
279 253 11.50
274 264 12.20
365 343 13.10
390 366 13.80
502 401 14.80
639 363 15.90
579 321 16.70
478 268 17.10
312 232 17.10
243 133 16.80
144 68 16.20
12 12 15.40
0 0 13.90
0 0 12.40
0 0 11.00
0 0 9.50
0 0 8.00
0 0 6.40
0 0 5.60
0 0 5.00
0 0 5.00
50 43 5.40
138 114 6.20
231 195 7.10
303 267 7.90
409 330 8.90
511 365 9.90
488 393 10.50
533 405 11.10
472 384 11.40
451 361 11.60
368 299 11.60
239 224 11.30
153 145 10.70
51 51 9.90
3 3 9.10
0 0 8.10
0 0 7.10
0 0 6.00
0 0 5.00
0 0 4.60
0 0 4.20
0 0 3.90
0 0 3.70
0 0 3.70
75 33 4.60
218 52 6.30
385 65 8.30
548 78 10.40
690 96 12.50
795 112 14.40
861 119 16.00
881 116 17.20
848 105 18.20
774 86 18.70
651 69 18.90
500 54 18.60
329 47 17.80
159 40 16.60
12 12 15.10
0 0 13.40
0 0 11.70
0 0 9.90
0 0 8.20
0 0 6.80
0 0 5.30
0 0 4.50
0 0 3.90
0 0 3.80
78 34 4.60
223 50 6.00
392 61 7.70
556 73 9.60
694 94 11.40
799 111 13.00
856 129 14.40
867 136 15.40
830 130 16.10
746 117 16.40
629 91 16.50
477 74 16.10
307 66 15.20
144 51 13.90
11 11 12.40
0 0 11.70
0 0 11.00
0 0 10.30
0 0 9.50
0 0 9.80
0 0 10.10
0 0 10.20
0 0 10.30
0 0 10.40
35 35 10.90
104 102 11.80
188 176 12.90
263 245 14.00
345 317 15.20
405 365 16.20
427 388 17.10
441 399 17.80
439 375 18.40
429 358 18.50
370 309 19.10
278 241 19.10
169 152 18.60
82 79 18.00
8 8 17.20
0 0 16.30
0 0 15.30
0 0 14.40
0 0 13.40
0 0 12.30
0 0 11.20
0 0 10.60
0 0 9.90
0 0 10.00
39 39 10.50
116 111 11.30
197 183 12.10
276 254 13.00
352 322 13.90
412 369 14.80
464 392 15.50
500 407 16.20
452 381 16.60
438 362 16.80
356 305 16.90
274 240 16.80
168 156 16.30
85 80 15.70
7 7 14.90
0 0 13.90
0 0 13.00
0 0 12.00
0 0 11.00
0 0 10.50
0 0 9.90
0 0 9.60
0 0 9.40
1 1 9.40
39 39 9.90
151 111 11.00
72 72 11.00
265 230 12.00
455 331 13.50
455 368 14.60
627 401 15.80
568 410 16.60
531 393 17.20
376 341 17.30
288 273 17.20
213 202 16.80
24 24 16.00
17 17 15.20
7 7 14.20
0 0 13.60
0 0 12.80
0 0 11.80
0 0 11.00
0 0 10.20
0 0 9.40
0 0 8.90
0 0 8.60
1 1 8.40
43 43 9.00
127 115 9.90
242 202 11.00
351 268 12.20
409 334 13.30
497 377 14.30
546 409 15.20
500 409 15.80
483 402 16.10
438 372 16.40
356 300 16.40
227 213 16.00
121 121 15.30
44 44 14.50
4 4 13.70
0 0 12.90
0 0 12.10
0 0 11.40
0 0 10.60
0 0 10.20
0 0 9.70
0 0 9.50
0 0 9.30
1 1 9.20
59 47 10.00
194 100 11.50
294 210 12.90
400 268 14.40
397 327 15.20
591 368 16.60
663 381 17.80
663 392 18.80
516 395 19.10
633 307 19.70
592 193 20.00
445 166 20.00
227 160 19.30
92 82 18.30
11 11 17.20
0 0 16.80
0 0 16.50
0 0 16.10
0 0 15.70
0 0 15.80
0 0 15.90
0 0 15.90
0 0 15.90
1 1 15.90
49 47 16.60
127 120 17.50
231 201 18.80
326 274 20.00
423 349 21.30
476 388 22.50
529 410 23.50
512 413 24.30
519 413 24.90
466 370 25.20
393 320 25.40
319 259 25.30
199 167 24.80
111 91 24.10
13 13 23.10
0 0 22.20
0 0 21.20
0 0 20.30
0 0 19.30
0 0 18.40
0 0 17.50
0 0 16.90
0 0 16.70
1 1 16.70
36 36 17.00
92 92 17.60
167 163 18.30
245 234 19.00
321 302 19.80
358 334 20.50
361 341 21.00
367 347 21.40
350 331 21.70
294 283 21.80
265 254 21.80
201 195 21.60
136 134 21.30
70 70 20.80
8 8 20.10
0 0 19.10
0 0 18.10
0 0 16.40
0 0 15.80
0 0 15.30
0 0 14.60
0 0 14.10
0 0 13.80
1 1 13.70
41 41 14.20
111 108 15.00
207 194 15.90
299 264 17.00
370 328 17.90
432 373 18.80
451 389 19.60
485 407 20.20
490 407 20.70
450 368 21.00
401 313 21.20
304 257 21.10
198 170 20.50
110 91 20.10
31 25 19.30
0 0 18.50
0 0 17.80
0 0 17.00
0 0 16.30
0 0 15.90
0 0 15.50
0 0 15.30
0 0 15.20
1 1 15.10
49 49 15.60
121 116 16.50
185 178 17.30
262 246 18.10
313 296 18.90
355 332 19.50
396 372 20.10
325 313 20.40
320 306 20.70
293 283 20.80
205 202 20.60
118 118 20.20
74 74 19.70
23 23 19.10
5 5 18.70
0 0 17.90
0 0 17.00
0 0 16.20
0 0 14.40
0 0 14.30
0 0 13.40
0 0 12.70
0 0 12.60
1 1 12.60
10 10 12.60
86 86 13.30
110 110 13.70
411 252 15.40
495 346 16.70
491 379 17.70
587 406 18.70
517 414 19.20
701 348 20.10
286 266 19.90
131 131 19.20
305 239 19.10
96 96 18.50
18 18 17.80
28 26 17.10
0 0 16.50
0 0 15.80
0 0 15.00
0 0 14.30
0 0 13.70
0 0 13.00
0 0 12.60
0 0 12.40
2 2 12.30
33 33 12.70
133 115 13.80
320 186 15.70
399 265 17.20
299 282 17.70
321 308 18.10
479 400 19.00
401 377 19.40
383 361 19.60
456 349 20.00
592 210 20.70
444 164 20.90
349 103 20.80
200 54 20.40
69 29 19.50
0 0 18.60
0 0 17.80
0 0 16.90
0 0 16.00
0 0 15.60
0 0 15.20
0 0 15.00
0 0 14.80
3 3 14.80
76 53 15.70
161 131 16.60
288 218 18.00
376 277 19.20
424 344 20.20
437 368 20.90
376 357 21.20
363 347 21.40
369 347 21.20
509 358 22.10
328 296 22.10
191 187 21.70
115 115 21.10
17 17 20.30
7 7 19.60
0 0 18.90
0 0 17.70
0 0 16.40
0 0 15.10
0 0 14.00
0 0 12.80
0 0 12.20
0 0 11.70
3 3 11.70
118 33 13.10
282 45 15.10
461 51 17.10
630 63 19.10
772 76 21.10
878 88 22.80
939 96 24.30
951 97 25.50
913 94 26.30
829 82 26.70
702 68 26.80
547 54 26.50
374 46 25.60
200 41 24.30
61 27 22.80
0 0 21.20
0 0 19.70
0 0 18.20
0 0 16.70
0 0 15.90
0 0 15.10
0 0 14.70
0 0 14.50
3 3 14.60
110 38 15.80
264 49 17.50
436 53 19.30
595 68 21.10
729 89 22.90
828 111 24.50
883 130 25.90
895 136 26.90
861 128 27.70
782 112 28.20
661 96 28.40
508 89 28.10
341 72 27.40
179 61 26.40
54 29 25.10
0 0 23.90
0 0 22.00
0 0 20.10
0 0 18.20
0 0 16.30
0 0 14.20
0 0 13.00
0 0 12.20
2 2 12.20
78 62 13.00
194 109 14.10
341 166 15.50
536 170 17.10
669 189 18.70
727 260 20.00
731 327 20.90
727 349 21.60
650 384 22.00
576 348 22.10
561 237 22.10
400 215 21.70
259 184 21.00
152 78 20.00
48 29 18.90
0 0 17.80
0 0 16.00
0 0 14.10
0 0 12.20
0 0 11.30
0 0 10.20
0 0 9.60
0 0 9.20
4 4 9.20
98 54 10.40
228 85 12.00
382 117 13.80
537 150 15.60
675 170 17.40
773 203 19.00
826 235 20.40
842 236 21.50
801 238 22.20
743 179 22.70
636 136 22.80
490 116 22.50
330 94 21.80
173 64 20.60
57 37 19.30
0 0 17.90
0 0 16.30
0 0 14.70
0 0 12.90
0 0 11.80
0 0 10.60
0 0 9.90
0 0 9.40
4 4 9.40
103 44 10.70
250 68 12.40
404 91 14.30
549 129 16.10
682 161 17.80
776 200 19.40
835 220 20.70
841 240 21.70
816 213 22.50
759 155 22.90
638 136 23.00
503 96 22.70
347 73 22.00
188 59 20.90
63 38 19.50
0 0 18.10
0 0 16.60
0 0 15.00
0 0 13.40
0 0 12.50
0 0 11.50
0 0 11.00
0 0 10.60
5 5 10.60
106 48 11.60
257 70 13.10
431 81 14.70
611 93 16.40
733 115 17.90
801 258 19.20
495 399 19.30
507 428 19.40
462 400 19.30
415 353 19.10
321 300 18.70
230 221 18.10
134 133 17.20
73 73 16.40
26 26 15.50
0 0 14.70
0 0 13.90
0 0 13.30
0 0 12.60
0 0 12.50
0 0 12.40
0 0 12.30
0 0 12.30
2 2 12.30
44 44 12.90
94 94 13.60
149 149 14.20
208 204 15.00
330 306 16.10
515 385 17.50
448 406 18.40
385 365 18.80
358 339 19.10
483 355 19.70
256 239 19.60
383 255 19.80
275 162 19.80
222 91 19.60
58 39 18.90
1 1 18.10
0 0 17.20
0 0 16.30
0 0 15.30
0 0 14.60
0 0 13.80
0 0 13.40
0 0 13.20
1 1 13.20
9 9 13.30
20 20 13.40
33 33 13.60
46 46 13.70
56 56 13.60
112 112 14.30
583 399 15.80
709 411 17.40
932 246 19.10
544 341 19.70
341 306 19.90
282 250 19.90
237 171 19.80
19 19 19.10
10 10 18.50
0 0 18.00
0 0 16.50
0 0 15.00
0 0 13.40
0 0 11.80
0 0 9.90
0 0 8.80
0 0 8.00
5 5 7.90
110 44 8.80
253 70 9.90
410 89 11.10
561 118 12.40
689 156 13.60
787 188 14.70
837 225 15.50
856 220 16.20
828 200 16.60
752 177 16.80
638 147 16.70
494 117 16.40
339 95 15.70
186 65 14.70
63 33 13.50
0 0 12.30
0 0 10.80
0 0 9.40
0 0 7.90
0 0 7.90
0 0 7.80
0 0 7.80
0 0 7.70
5 5 7.80
100 58 9.10
233 102 10.70
381 144 12.40
520 176 14.30
643 227 16.00
732 244 17.50
783 283 18.70
797 291 19.80
767 271 20.50
699 227 20.90
596 209 21.10
467 169 20.90
321 126 20.20
178 73 19.20
61 32 18.00
0 0 16.80
0 0 15.30
0 0 13.70
0 0 12.00
0 0 10.70
0 0 9.20
0 0 8.40
0 0 7.80
6 6 7.80
113 44 8.90
261 64 10.30
426 77 11.90
588 85 13.50
727 102 15.10
830 121 16.50
887 138 17.70
898 146 18.50
862 144 19.10
787 124 19.50
671 104 19.50
524 84 19.10
358 75 18.40
198 56 17.30
68 34 16.10
0 0 14.80
0 0 13.60
0 0 12.40
0 0 11.20
0 0 11.10
0 0 10.90
0 0 10.90
0 0 10.80
1 1 10.80
34 34 11.30
91 91 11.90
144 144 12.60
185 184 13.10
268 261 13.90
307 294 14.70
319 308 15.20
356 342 15.70
314 303 16.00
292 280 16.10
236 231 16.20
173 172 15.90
127 127 15.30
71 71 15.30
21 21 15.00
0 0 14.50
0 0 13.40
0 0 12.20
0 0 11.10
0 0 10.00
0 0 8.60
0 0 7.80
0 0 7.20
6 6 7.10
127 37 8.00
284 45 9.20
454 50 10.50
615 64 11.80
752 81 13.10
855 98 14.20
915 109 15.10
928 113 15.80
896 108 16.20
818 94 16.40
700 77 16.30
552 61 15.90
385 51 15.10
219 45 14.00
78 36 12.80
0 0 11.40
0 0 10.30
0 0 9.20
0 0 8.10
0 0 8.70
0 0 9.30
0 0 9.60
0 0 9.90
2 2 9.90
30 30 10.40
75 75 10.90
106 106 11.60
144 144 12.00
193 192 12.20
279 271 13.70
305 293 14.50
309 297 15.20
286 276 15.60
256 248 15.90
227 222 16.00
187 184 16.10
137 137 15.90
83 83 15.60
29 29 15.20
0 0 14.70
0 0 13.70
0 0 12.70
0 0 11.70
0 0 10.50
0 0 9.10
0 0 8.40
0 0 7.90
7 7 7.90
119 42 9.20
267 60 10.70
436 64 12.50
582 95 14.20
716 119 15.80
798 175 17.20
847 214 18.30
850 242 19.20
820 229 19.80
746 201 20.10
635 165 20.10
494 130 19.80
343 113 19.10
193 69 18.00
68 37 16.80
0 0 15.50
0 0 14.10
0 0 12.80
0 0 11.40
0 0 10.90
0 0 10.30
0 0 10.00
0 0 9.70
6 6 9.80
107 58 11.10
245 81 12.60
404 104 14.50
547 142 16.20
690 161 17.80
776 214 19.30
826 253 20.60
830 278 21.60
791 254 22.20
729 229 22.60
620 193 22.70
485 138 22.50
323 124 21.70
182 89 20.70
63 41 19.50
0 0 18.20
0 0 16.70
0 0 15.10
0 0 13.50
0 0 12.40
0 0 11.10
0 0 10.40
0 0 9.90
7 7 9.90
122 41 11.30
274 53 12.90
447 55 14.70
609 68 16.50
746 86 18.20
848 104 19.70
906 119 21.00
914 130 21.90
885 122 22.60
807 107 23.00
686 94 23.10
537 89 22.70
369 73 22.00
204 60 20.80
72 35 19.50
0 0 18.10
0 0 17.00
0 0 15.90
0 0 14.80
0 0 14.50
0 0 14.20
0 0 13.90
0 0 13.80
6 6 13.90
101 60 15.10
231 94 16.50
399 117 18.30
520 171 20.00
661 218 21.60
692 300 22.90
750 305 24.10
779 331 25.00
695 367 25.60
617 341 25.80
580 230 25.90
451 199 25.70
324 137 25.10
183 79 24.20
72 34 23.10
1 1 21.90
0 0 20.00
0 0 18.10
0 0 16.30
0 0 14.70
0 0 13.00
0 0 12.00
0 0 11.30
7 7 11.30
127 38 12.70
282 48 14.30
450 53 16.00
612 66 17.70
747 85 19.30
849 104 20.70
910 115 21.90
927 117 22.90
894 113 23.60
817 99 23.90
702 82 24.00
555 64 23.70
393 52 22.90
228 46 21.80
85 38 20.50
1 1 19.10
0 0 17.70
0 0 16.20
0 0 14.80
0 0 14.30
0 0 13.60
0 0 13.30
0 0 13.00
9 9 13.20
137 46 14.70
307 73 16.40
426 99 17.90
531 170 19.20
603 292 20.30
581 377 21.10
412 383 21.10
427 395 21.20
224 219 20.50
303 290 20.20
346 311 20.00
344 254 19.90
221 189 19.40
106 98 18.70
62 46 17.90
2 2 17.20
0 0 16.40
0 0 15.70
0 0 15.00
0 0 14.80
0 0 14.60
0 0 14.50
0 0 14.40
3 3 14.50
46 46 15.00
108 108 15.60
185 180 16.40
259 245 17.30
331 311 18.10
379 352 18.90
389 369 19.50
368 353 19.90
376 353 20.20
346 329 20.40
273 263 20.40
200 196 19.90
121 121 19.80
63 63 19.40
21 21 18.80
1 1 18.30
0 0 17.00
0 0 15.70
0 0 14.40
0 0 13.10
0 0 11.70
0 0 10.90
0 0 10.30
7 7 10.40
119 43 11.60
264 65 13.10
421 81 14.80
572 108 16.50
701 143 18.00
796 180 19.40
847 217 20.50
868 212 21.50
833 211 22.10
764 179 22.40
654 148 22.50
519 109 22.20
365 83 21.50
213 58 20.50
81 35 19.20
1 1 17.90
0 0 16.70
0 0 15.60
0 0 14.40
0 0 14.00
0 0 13.50
0 0 13.30
0 0 13.10
6 6 13.10
87 71 14.10
210 110 15.50
333 184 16.90
470 233 18.50
591 285 20.00
703 291 21.40
792 303 22.80
756 341 23.70
751 291 24.50
685 273 24.90
622 188 25.10
514 123 25.00
372 76 24.60
218 71 23.70
84 46 22.50
2 2 21.30
0 0 20.80
0 0 20.30
0 0 19.90
0 0 19.90
0 0 20.00
0 0 19.90
0 0 19.90
5 5 20.00
77 66 20.90
182 140 22.20
268 223 23.40
368 283 24.60
473 354 26.00
576 383 27.30
600 421 28.40
577 433 29.10
531 428 29.60
492 390 29.80
423 344 29.90
317 258 29.60
200 186 28.90
109 105 28.00
38 38 27.00
1 1 26.00
0 0 24.80
0 0 23.50
0 0 22.20
0 0 21.40
0 0 20.50
0 0 20.00
0 0 19.60
9 9 19.70
97 57 20.60
228 107 21.80
437 90 23.50
586 101 25.10
794 193 26.90
677 342 27.90
372 337 27.70
519 422 27.90
487 405 28.00
418 357 27.90
297 279 27.40
348 250 27.10
155 152 26.40
75 75 25.50
7 7 24.60
1 1 23.80
0 0 22.40
0 0 21.10
0 0 19.80
0 0 19.00
0 0 18.20
0 0 17.80
0 0 17.40
7 7 17.50
121 56 18.80
268 74 20.30
401 124 21.90
487 227 23.20
559 309 24.30
646 355 25.40
735 334 26.40
669 415 27.00
694 372 27.60
604 355 27.80
503 349 27.80
397 272 27.50
284 206 26.80
184 95 26.00
78 49 25.00
2 2 23.90
0 0 22.30
0 0 20.80
0 0 19.20
0 0 18.20
0 0 17.10
0 0 16.50
0 0 16.10
6 6 16.10
99 56 17.10
216 104 18.30
360 152 19.70
514 176 21.20
646 226 22.70
726 252 24.10
774 294 25.20
775 310 26.00
760 287 26.60
693 247 27.00
583 244 27.00
464 188 26.80
310 152 26.10
173 93 25.10
58 50 24.00
1 1 22.90
0 0 21.70
0 0 20.60
0 0 19.50
0 0 19.00
0 0 18.50
0 0 18.20
0 0 18.00
2 2 18.00
44 44 18.40
91 91 18.80
168 165 19.70
186 184 20.30
276 265 21.00
410 373 21.90
500 411 22.90
441 409 23.50
444 410 24.00
430 363 24.30
350 320 24.50
275 254 24.40
146 144 24.00
175 110 23.70
88 58 23.20
3 3 22.50
0 0 21.70
0 0 20.90
0 0 20.10
0 0 19.60
0 0 19.00
0 0 18.60
0 0 18.40
1 1 18.40
26 26 18.70
71 71 19.10
138 138 19.70
210 206 20.30
246 240 21.00
293 282 21.50
312 299 22.00
344 330 22.50
273 270 22.60
251 244 22.70
225 219 22.70
284 252 22.40
200 187 22.60
129 110 22.40
64 44 22.10
3 3 21.60
0 0 20.80
0 0 20.10
0 0 19.30
0 0 18.90
0 0 18.50
0 0 18.20
0 0 18.10
3 3 18.10
69 60 18.90
185 141 19.90
275 224 21.00
381 275 22.10
613 274 23.60
710 295 25.10
451 379 25.40
663 426 26.20
547 413 26.60
643 353 27.10
248 234 26.50
45 45 25.50
179 165 25.00
86 86 24.30
72 56 23.70
1 1 23.00
0 0 21.80
0 0 20.70
0 0 19.60
0 0 18.50
0 0 17.40
0 0 16.90
0 0 16.50
3 3 16.50
89 57 17.20
160 130 17.80
328 202 18.80
595 145 20.20
675 228 21.40
547 383 22.00
593 416 22.40
433 399 22.50
333 318 22.40
153 152 21.80
51 51 21.00
41 41 20.40
29 29 19.80
17 17 19.30
6 6 18.60
1 1 18.30
0 0 17.40
0 0 16.40
0 0 15.50
0 0 14.70
0 0 13.80
0 0 13.30
0 0 13.00
3 3 13.00
42 42 13.50
136 125 14.40
276 209 15.70
478 241 17.40
555 307 18.90
629 362 20.20
717 353 21.40
720 380 22.30
646 399 22.90
658 301 23.30
611 204 23.60
481 169 23.60
342 126 23.20
232 71 22.50
90 46 21.50
3 3 20.40
0 0 19.10
0 0 17.90
0 0 16.60
0 0 15.70
0 0 14.90
0 0 14.40
0 0 14.00
4 4 14.10
61 60 14.70
132 126 15.50
254 206 16.40
277 260 17.30
347 326 18.00
441 372 18.80
523 418 19.70
536 440 20.40
523 426 20.90
505 378 21.20
451 336 21.40
379 262 21.40
241 200 21.10
143 118 20.50
44 43 19.80
1 1 19.00
0 0 17.50
0 0 15.90
0 0 14.30
0 0 13.00
0 0 11.60
0 0 10.90
0 0 10.30
4 4 10.30
88 53 11.20
178 138 12.10
293 208 13.20
508 203 14.90
590 274 16.20
663 331 17.30
747 326 18.40
763 313 19.20
717 336 19.80
628 341 20.00
558 283 20.10
390 260 19.70
270 206 19.00
153 120 18.20
68 43 17.20
1 1 16.10
0 0 15.80
0 0 15.50
0 0 15.10
0 0 15.60
0 0 15.80
0 0 15.70
0 0 15.30
1 1 16.10
18 18 16.70
41 41 17.00
66 66 17.20
89 89 17.70
116 116 18.20
123 123 18.60
137 137 18.80
144 144 19.20
132 132 19.20
122 122 19.40
98 98 19.50
83 83 19.50
61 61 19.40
38 38 19.20
14 14 19.00
1 1 18.80
0 0 18.30
0 0 17.20
0 0 16.10
0 0 15.20
0 0 14.10
0 0 13.00
0 0 12.30
5 5 12.30
97 56 13.40
228 99 14.80
359 155 16.20
488 214 17.60
608 253 19.00
713 254 20.30
779 285 21.50
799 294 22.40
755 288 23.00
704 261 23.30
637 189 23.50
514 121 23.30
370 84 22.80
221 61 21.80
89 40 20.70
2 2 19.40
0 0 18.20
0 0 16.90
0 0 15.70
0 0 15.40
0 0 15.00
0 0 14.80
0 0 14.70
5 5 14.70
82 57 15.70
149 125 16.60
330 185 18.30
442 241 19.90
591 278 21.60
627 357 22.90
733 329 24.30
658 417 25.10
626 396 25.60
671 295 26.20
629 234 26.50
425 239 26.30
331 129 25.90
190 83 25.00
77 37 23.90
3 3 22.80
0 0 21.60
0 0 20.50
0 0 19.40
0 0 18.70
0 0 17.90
0 0 17.40
0 0 17.10
4 4 17.10
103 43 18.20
244 75 19.60
433 86 21.30
607 65 23.10
753 75 24.90
869 237 26.50
480 396 26.50
441 410 26.50
435 396 26.40
393 364 26.20
308 293 25.70
223 216 25.10
127 127 24.20
73 73 23.30
23 23 22.40
1 1 21.60
0 0 20.10
0 0 18.70
0 0 17.20
0 0 16.20
0 0 15.00
0 0 14.70
0 0 14.20
2 2 14.30
32 32 14.60
22 22 14.60
37 37 14.70
52 52 14.80
64 64 14.90
302 289 15.90
346 332 16.70
413 384 17.50
523 410 18.40
414 372 18.30
202 193 18.70
320 251 19.10
405 134 19.40
252 66 19.40
96 42 19.00
4 4 18.50
0 0 17.50
0 0 16.60
0 0 15.60
0 0 14.90
0 0 14.10
0 0 13.60
0 0 13.30
2 2 13.30
53 53 13.90
118 115 14.70
195 184 15.40
260 245 16.20
322 303 16.90
360 341 17.60
358 343 18.00
391 367 18.50
389 363 18.80
363 337 19.00
301 285 19.00
240 229 18.80
153 151 18.00
93 93 17.90
34 34 17.50
1 1 16.90
0 0 15.90
0 0 14.80
0 0 13.70
0 0 13.00
0 0 12.30
0 0 12.00
0 0 11.70
3 3 11.80
115 36 12.80
315 75 14.30
513 99 15.90
703 132 17.40
866 275 18.90
695 311 19.60
280 263 19.00
83 83 17.90
81 81 17.00
207 204 16.60
145 145 16.20
78 78 15.60
109 109 15.30
25 25 14.70
9 9 14.30
1 1 13.80
0 0 14.10
0 0 14.70
0 0 15.10
0 0 14.90
0 0 14.60
0 0 14.70
0 0 14.80
1 1 14.90
40 40 15.30
130 123 16.10
216 201 17.00
278 253 18.00
191 187 18.30
280 271 18.80
360 341 19.40
554 424 20.30
445 408 20.90
393 364 21.20
361 308 21.40
52 52 20.70
34 34 20.00
20 20 19.50
8 8 18.90
1 1 18.40
0 0 17.60
0 0 16.60
0 0 17.10
0 0 16.70
0 0 16.10
0 0 15.80
0 0 15.60
2 2 15.60
61 55 16.30
146 129 17.20
246 209 18.30
364 274 19.50
450 358 20.70
519 399 21.80
536 417 22.60
565 444 23.30
564 430 23.90
503 390 24.20
441 347 24.30
342 260 24.20
227 194 23.70
124 110 22.90
49 45 22.00
1 1 21.10
0 0 20.90
0 0 20.60
0 0 20.30
0 0 20.50
0 0 20.60
0 0 20.50
0 0 20.80
2 2 20.90
50 49 21.60
111 109 22.40
210 196 23.50
300 264 24.70
373 324 25.80
386 360 26.70
463 396 27.60
490 421 28.40
477 400 29.00
393 365 29.30
316 299 29.40
258 243 29.20
198 184 28.90
121 111 28.40
43 42 27.70
1 1 26.90
0 0 25.20
0 0 23.50
0 0 21.80
0 0 20.00
0 0 18.10
0 0 17.10
0 0 16.40
3 3 16.30
96 39 17.30
234 66 18.70
380 100 20.10
529 130 21.70
659 172 23.20
752 221 24.60
803 265 25.70
813 287 26.60
798 259 27.20
727 232 27.60
631 176 27.60
502 129 27.40
352 110 26.70
210 66 25.80
81 37 24.60
1 1 23.30
0 0 21.30
0 0 19.40
0 0 17.40
0 0 16.30
0 0 15.10
0 0 14.40
0 0 13.90
2 2 13.90
78 51 14.80
193 97 15.90
344 138 17.40
485 191 19.00
612 230 20.50
691 279 21.80
689 379 22.80
748 333 23.70
715 307 24.30
672 257 24.70
573 241 24.80
439 213 24.50
288 156 23.90
173 89 22.90
59 41 21.80
1 1 20.70
0 0 19.60
0 0 18.50
0 0 17.40
0 0 17.00
0 0 16.50
0 0 16.20
0 0 16.00
2 2 16.00
60 50 16.60
115 109 17.60
167 163 18.30
215 209 18.90
286 274 19.70
335 319 20.40
224 222 20.20
213 211 20.50
283 274 20.10
218 217 20.80
265 246 21.00
364 244 21.30
322 151 21.50
208 88 21.40
90 46 21.00
3 3 20.40
0 0 19.10
0 0 17.80
0 0 16.50
0 0 15.50
0 0 14.40
0 0 13.80
0 0 13.40
2 2 13.30
94 40 14.50
222 67 15.90
355 122 17.40
511 152 19.10
589 254 20.50
650 325 21.70
738 316 22.80
717 362 23.70
669 376 24.20
680 265 24.60
625 211 24.80
460 180 24.70
323 137 24.10
189 74 23.20
63 39 22.00
0 0 20.90
0 0 18.80
0 0 16.70
0 0 14.60
0 0 12.90
0 0 11.20
0 0 10.20
0 0 9.60
2 2 9.50
72 46 10.20
182 107 11.30
311 168 12.50
439 230 13.80
548 296 15.10
630 327 16.20
680 361 17.20
696 371 17.90
674 358 18.50
598 348 18.70
506 303 18.70
410 233 18.50
282 156 17.90
151 113 17.10
54 44 16.10
0 0 15.10
0 0 13.60
0 0 12.10
0 0 10.60
0 0 10.00
0 0 9.10
0 0 8.60
0 0 8.20
2 2 8.00
89 37 8.80
230 59 9.90
391 72 11.20
552 86 12.70
682 121 14.00
790 140 15.30
845 174 16.20
872 168 17.00
850 153 17.60
774 143 17.80
663 120 17.80
520 96 17.50
361 79 16.80
202 59 15.80
71 33 14.60
0 0 13.30
0 0 11.80
0 0 10.20
0 0 8.70
0 0 8.50
0 0 8.20
0 0 8.00
0 0 7.90
1 1 7.80
83 38 8.80
217 81 10.20
371 94 11.90
526 117 13.60
668 140 15.40
779 155 17.00
839 183 18.30
859 189 19.40
835 176 20.20
774 140 20.60
668 110 20.80
530 82 20.60
376 60 20.00
216 46 18.90
78 36 17.70
1 1 16.30
0 0 15.50
0 0 14.60
0 0 13.70
0 0 13.70
0 0 13.60
0 0 13.50
0 0 13.50
2 2 13.50
95 61 14.70
157 109 15.50
285 210 16.70
379 265 17.80
420 334 18.70
488 389 19.60
536 407 20.40
467 399 20.80
376 355 20.90
280 271 20.80
190 188 20.30
137 137 19.80
30 30 19.10
20 20 18.40
7 7 17.40
0 0 17.10
0 0 16.80
0 0 16.50
0 0 16.10
0 0 15.90
0 0 15.60
0 0 15.40
0 0 15.30
1 1 15.30
69 45 16.20
186 98 17.50
319 154 19.00
454 210 20.60
581 248 22.30
666 267 23.70
705 315 25.00
725 321 26.00
700 313 26.70
638 292 27.10
550 269 27.30
427 204 27.10
290 145 26.50
158 89 25.60
53 36 24.50
0 0 23.30
0 0 22.00
0 0 20.70
0 0 19.30
0 0 18.30
0 0 17.20
0 0 16.60
0 0 16.20
1 1 16.20
60 49 16.90
168 119 17.90
304 154 19.30
425 229 20.60
543 289 22.00
622 323 23.30
687 345 24.40
702 355 25.30
682 343 25.90
612 333 26.30
510 289 26.40
385 285 26.20
262 196 25.60
145 109 24.70
48 40 23.70
0 0 22.70
0 0 20.50
0 0 18.20
0 0 15.90
0 0 14.00
0 0 11.80
0 0 10.60
0 0 9.80
1 1 9.60
76 36 10.40
209 64 11.60
368 87 13.00
528 102 14.70
663 133 16.10
766 163 17.50
830 186 18.60
847 199 19.50
824 185 20.10
754 161 20.50
643 136 20.50
509 99 20.20
351 79 19.50
193 58 18.50
65 33 17.20
0 0 16.00
0 0 15.70
0 0 15.30
0 0 15.00
0 0 15.90
0 0 16.80
0 0 17.30
0 0 17.70
1 1 17.80
77 34 18.90
214 56 20.60
376 73 22.60
534 90 24.70
675 112 26.70
785 129 28.70
856 138 30.40
881 136 31.80
857 127 32.90
786 110 33.60
681 84 33.00
539 63 33.90
377 51 33.40
211 44 32.40
72 29 31.20
0 0 29.80
0 0 28.10
0 0 26.40
0 0 24.70
0 0 22.50
0 0 20.20
0 0 19.00
0 0 18.10
1 1 18.00
82 38 18.70
227 46 20.00
391 54 21.60
549 71 23.10
689 91 24.70
796 111 26.10
866 122 27.40
890 122 28.30
869 112 29.00
802 93 29.50
695 72 29.60
551 56 29.30
387 47 28.70
222 41 27.60
76 26 26.30
0 0 25.00
0 0 23.40
0 0 21.80
0 0 20.30
0 0 19.80
0 0 19.30
0 0 19.00
0 0 18.80
0 0 18.80
37 37 19.20
143 108 20.30
219 188 21.30
332 257 22.60
424 331 23.80
406 370 24.60
410 377 25.20
267 260 25.20
387 360 25.50
471 361 26.00
404 320 26.20
365 257 26.30
342 123 26.30
201 51 26.00
79 34 25.30
1 1 24.50
0 0 22.90
0 0 21.30
0 0 19.80
0 0 18.50
0 0 17.20
0 0 16.60
0 0 16.10
0 0 16.00
86 33 16.80
249 50 18.10
441 69 19.70
609 73 21.30
779 101 22.90
919 287 24.50
436 364 24.40
415 388 24.20
423 390 24.10
296 284 23.60
223 218 23.00
152 152 22.30
97 97 21.50
69 69 20.80
17 17 20.00
0 0 19.30
0 0 17.80
0 0 16.30
0 0 14.80
0 0 13.70
0 0 12.50
0 0 11.80
0 0 11.40
0 0 11.30
61 33 12.00
179 78 13.20
317 138 14.70
454 200 16.20
567 245 17.60
669 245 19.00
719 284 20.10
736 296 21.00
707 287 21.70
644 258 22.10
549 250 22.20
429 199 22.00
294 136 21.40
158 75 20.50
49 30 19.40
0 0 18.30
0 0 16.80
0 0 15.30
0 0 13.70
0 0 12.70
0 0 11.70
0 0 11.20
0 0 10.90
0 0 10.90
6 6 10.90
17 17 11.00
31 31 11.10
74 74 11.40
288 261 12.30
233 224 12.80
655 391 14.40
539 398 15.20
921 295 16.70
515 340 17.10
353 297 17.20
43 43 16.50
33 33 15.50
19 19 15.20
5 5 14.80
0 0 14.20
0 0 14.10
0 0 14.10
0 0 14.00
0 0 13.50
0 0 14.00
0 0 14.00
0 0 14.00
0 0 14.00
14 14 14.30
16 16 14.40
101 101 15.00
180 177 15.80
328 298 17.00
481 363 18.40
504 399 19.60
489 401 20.30
364 345 20.80
355 334 21.10
335 309 21.20
261 244 21.30
131 130 20.80
63 63 20.20
20 20 19.60
0 0 19.00
0 0 18.50
0 0 18.10
0 0 17.60
0 0 17.10
0 0 16.70
0 0 16.50
0 0 16.30
0 0 16.30
32 32 16.60
187 88 17.70
310 147 18.90
308 254 17.60
479 322 20.20
553 328 21.50
266 252 20.90
77 77 19.90
74 74 20.10
153 153 19.80
118 118 19.60
174 172 19.30
126 126 19.30
58 58 19.00
35 27 18.50
0 0 18.30
0 0 18.00
0 0 17.70
0 0 17.30
0 0 17.00
0 0 16.60
0 0 16.50
0 0 16.30
0 0 16.30
62 32 17.10
193 59 18.50
358 68 20.30
527 84 22.30
675 87 24.20
777 113 26.00
838 136 27.50
854 150 28.80
815 163 29.60
742 146 30.20
637 113 30.40
487 103 30.20
325 84 29.50
166 60 28.40
46 31 27.10
0 0 25.80
0 0 23.50
0 0 21.20
0 0 18.90
0 0 16.70
0 0 14.40
0 0 13.10
0 0 12.20
0 0 12.00
39 35 12.30
123 102 13.00
219 182 13.70
359 274 14.80
488 299 15.90
639 282 17.10
667 359 18.00
702 335 18.80
654 342 19.20
599 319 19.50
481 283 19.50
357 264 19.20
293 134 18.70
137 82 17.90
42 32 17.00
0 0 16.10
0 0 15.60
0 0 15.10
0 0 14.60
0 0 15.10
0 0 15.60
0 0 15.90
0 0 16.10
0 0 16.10
41 31 16.80
124 97 17.80
201 175 18.90
248 235 19.80
306 289 20.80
388 356 21.80
523 393 23.00
459 389 23.80
513 390 24.60
390 351 24.90
431 305 25.30
300 252 25.40
170 156 24.90
61 61 24.20
4 4 23.40
0 0 21.90
0 0 20.60
0 0 19.20
0 0 17.70
0 0 16.30
0 0 14.80
0 0 13.30
0 0 12.50
0 0 12.40
65 30 13.10
216 52 14.70
404 63 16.50
589 74 18.40
755 97 20.40
802 218 21.90
491 380 22.10
575 399 22.40
512 389 22.50
408 352 22.20
390 304 21.90
230 219 21.10
145 141 20.20
65 65 19.10
4 4 18.00
0 0 16.70
0 0 15.40
0 0 14.00
0 0 12.60
0 0 12.10
0 0 11.50
0 0 11.20
0 0 10.90
0 0 10.90
55 34 11.70
187 54 13.20
375 77 15.20
526 77 17.30
676 100 19.30
737 250 20.90
434 366 21.10
453 394 21.30
460 381 21.50
398 346 21.50
320 296 21.10
213 206 20.50
115 115 19.60
39 39 18.50
4 4 17.50
0 0 16.20
0 0 14.90
0 0 13.50
0 0 12.10
0 0 11.10
0 0 9.90
0 0 9.20
0 0 8.70
0 0 8.60
52 33 9.20
181 53 10.40
341 70 12.10
504 82 13.90
642 110 15.70
751 130 17.30
812 157 18.60
837 155 19.70
810 148 20.50
735 134 20.90
619 116 21.00
473 95 20.70
315 77 19.90
158 54 18.70
14 14 17.30
0 0 15.70
0 0 14.00
0 0 12.30
0 0 10.60
0 0 10.00
0 0 9.20
0 0 8.70
0 0 8.30
0 0 8.10
46 31 8.50
164 63 9.60
316 95 11.10
476 119 12.70
615 144 14.50
720 175 15.90
789 192 17.20
814 192 18.20
793 172 19.00
724 147 19.40
623 106 19.50
488 73 19.30
327 58 18.60
164 46 17.50
16 16 16.10
0 0 14.60
0 0 13.00
0 0 11.40
0 0 9.80
0 0 9.40
0 0 9.00
0 0 8.70
0 0 8.40
0 0 8.20
20 20 8.70
170 55 10.70
331 75 12.80
494 87 15.00
638 106 16.90
752 119 18.70
816 139 20.20
852 124 21.40
820 124 22.30
751 104 22.70
630 92 22.80
483 73 22.40
320 61 21.40
158 48 20.10
14 14 18.50
0 0 17.20
0 0 16.00
0 0 14.70
0 0 13.40
0 0 12.60
0 0 11.70
0 0 11.20
0 0 10.80
0 0 10.40
19 19 10.90
115 94 12.10
203 172 13.30
281 238 14.50
467 295 16.10
488 362 17.30
683 312 18.80
587 387 19.60
399 365 19.70
439 359 19.80
393 297 19.80
467 139 19.90
310 67 19.60
167 51 18.80
37 22 17.70
0 0 16.40
0 0 15.10
0 0 13.70
0 0 12.30
0 0 11.50
0 0 10.50
0 0 9.90
0 0 9.30
0 0 8.90
16 16 9.10
140 72 10.50
282 118 12.00
437 151 13.70
567 196 15.30
659 249 16.60
730 239 17.70
759 240 18.70
739 218 19.30
671 222 19.60
560 180 19.60
434 139 19.20
287 87 18.40
128 61 17.20
10 10 15.90
0 0 14.60
0 0 13.20
0 0 11.90
0 0 10.60
0 0 10.10
0 0 9.50
0 0 9.10
0 0 8.80
0 0 8.60
16 16 9.00
155 58 10.90
310 90 13.00
464 111 15.20
604 141 17.10
711 170 18.90
787 174 20.40
803 188 21.60
776 180 22.50
705 155 22.90
596 123 23.00
453 96 22.60
300 71 21.70
148 45 20.40
11 11 18.90
0 0 17.50
0 0 16.20
0 0 14.80
0 0 13.30
0 0 12.30
0 0 11.10
0 0 10.40
0 0 9.70
0 0 9.20
16 16 9.50
153 66 11.10
306 86 12.90
465 107 14.70
595 149 16.40
674 228 17.70
733 228 18.90
739 252 19.70
715 236 20.30
661 223 20.60
562 168 20.60
430 133 20.10
276 90 19.30
125 57 18.10
9 9 16.70
0 0 15.60
0 0 14.50
0 0 13.30
0 0 12.10
0 0 11.70
0 0 11.30
0 0 11.10
0 0 10.80
0 0 10.60
12 12 10.90
118 83 12.40
265 128 14.40
407 175 16.30
512 254 18.00
604 302 19.50
646 322 20.80
659 335 21.70
622 332 22.40
571 328 22.70
603 160 23.10
472 96 23.10
277 91 22.30
122 56 21.20
8 8 19.80
0 0 18.80
0 0 17.90
0 0 16.90
0 0 16.00
0 0 15.40
0 0 14.70
0 0 14.30
0 0 13.80
0 0 13.50
14 14 13.80
160 56 15.60
318 78 17.40
528 132 19.60
621 140 21.30
738 218 22.90
453 363 23.00
453 388 23.10
435 365 23.10
368 341 22.80
334 283 22.40
263 229 21.80
185 152 21.00
93 75 20.10
7 7 19.00
0 0 18.40
0 0 17.90
0 0 17.30
0 0 16.80
0 0 16.80
0 0 16.80
0 0 16.30
0 0 16.70
0 0 16.60
6 6 16.90
65 65 17.70
132 129 18.60
208 201 19.60
290 274 20.60
323 308 21.40
333 315 22.10
343 324 22.60
315 302 22.90
254 248 23.00
198 195 22.80
150 150 22.50
81 81 22.00
35 35 21.50
2 2 20.90
0 0 20.40
0 0 19.90
0 0 19.40
0 0 18.90
0 0 18.30
0 0 17.20
0 0 17.50
0 0 17.30
0 0 16.90
2 2 15.80
24 24 17.20
47 47 17.50
76 76 17.40
99 99 17.70
120 120 18.20
126 126 18.40
129 129 18.50
135 135 18.60
112 112 18.60
92 92 18.60
72 72 18.60
42 42 18.40
20 20 18.20
1 1 18.00
0 0 17.50
0 0 16.90
0 0 16.40
0 0 15.90
0 0 15.50
0 0 15.00
0 0 14.80
0 0 14.50
0 0 14.30
12 12 14.60
95 77 15.80
254 135 17.60
332 250 19.10
385 293 20.20
363 329 20.90
607 357 22.30
577 377 23.30
555 362 24.00
443 341 24.20
504 251 24.50
488 123 24.70
305 91 24.40
133 60 23.50
12 12 22.40
0 0 20.90
0 0 19.40
0 0 18.00
0 0 16.50
0 0 15.30
0 0 13.90
0 0 13.10
0 0 12.40
0 0 11.80
9 9 11.90
140 51 13.50
298 74 15.40
465 86 17.20
611 97 19.00
727 108 20.60
789 130 22.00
809 135 23.10
777 133 23.80
700 119 24.10
587 95 24.10
434 86 23.60
270 71 22.70
116 46 21.40
4 4 19.90
0 0 18.60
0 0 17.20
0 0 15.90
0 0 14.50
0 0 13.70
0 0 12.80
0 0 12.40
0 0 11.90
0 0 11.60
9 9 11.70
137 51 13.40
293 76 15.30
454 89 17.30
599 109 19.20
708 131 20.90
776 145 22.30
799 144 23.50
771 137 24.30
683 152 24.70
561 124 24.70
418 96 24.20
258 93 23.20
110 56 21.90
3 3 20.40
0 0 19.40
0 0 18.50
0 0 17.50
0 0 16.60
0 0 16.10
0 0 15.50
0 0 15.20
0 0 14.90
0 0 14.70
7 7 14.80
129 52 16.40
282 92 18.30
433 112 20.20
578 133 22.10
685 161 23.80
745 192 25.30
770 189 26.50
732 195 27.20
667 158 27.70
565 111 27.70
425 82 27.40
262 69 26.40
111 42 25.20
3 3 23.70
0 0 22.80
0 0 21.90
0 0 21.00
0 0 20.20
0 0 19.60
0 0 19.10
0 0 18.70
0 0 18.40
0 0 18.10
7 7 18.20
139 43 19.90
293 68 21.80
445 92 23.70
569 140 25.50
672 175 27.10
748 179 28.60
751 214 29.60
710 221 30.30
642 186 30.70
538 140 30.70
397 108 30.20
239 84 29.20
97 55 27.90
2 2 26.50
0 0 26.00
0 0 25.50
0 0 25.00
0 0 24.50
0 0 24.40
0 0 24.40
0 0 24.40
0 0 24.30
0 0 24.30
2 2 24.40
27 27 24.80
69 69 25.20
106 106 25.80
134 134 26.20
162 162 26.70
211 210 27.20
193 192 27.50
229 227 27.90
169 168 28.00
125 125 28.00
88 88 27.80
57 57 27.60
20 20 27.20
1 1 26.20
0 0 26.00
0 0 25.50
0 0 25.10
0 0 24.30
0 0 23.60
0 0 22.20
0 0 22.20
0 0 21.70
0 0 21.40
2 2 21.20
31 31 21.50
43 43 21.80
213 200 22.60
275 260 23.40
388 332 24.20
401 366 24.80
321 305 25.10
255 248 25.10
183 181 25.00
157 157 24.80
125 125 24.50
23 23 24.10
9 9 23.60
1 1 23.20
0 0 22.20
0 0 21.20
0 0 20.20
0 0 19.20
0 0 18.30
0 0 17.30
0 0 16.80
0 0 16.30
0 0 15.90
6 6 16.00
139 54 17.40
284 74 18.90
462 70 20.60
608 92 22.30
788 224 24.00
537 334 24.40
536 370 24.70
484 355 24.80
377 316 24.60
229 222 23.80
184 178 23.10
124 119 22.20
60 51 21.30
1 1 20.40
0 0 19.50
0 0 18.60
0 0 17.60
0 0 16.70
0 0 16.20
0 0 15.60
0 0 15.40
0 0 15.00
0 0 14.90
3 3 14.80
28 28 14.60
139 131 16.00
275 219 17.00
240 222 17.50
486 324 18.60
399 358 19.20
287 276 19.30
167 166 19.10
139 139 18.80
60 60 18.30
64 64 18.00
18 18 17.50
7 7 17.10
1 1 16.80
0 0 16.10
0 0 15.40
0 0 14.70
0 0 13.90
0 0 13.20
0 0 12.40
0 0 12.00
0 0 11.50
0 0 11.20
4 4 11.30
101 54 12.50
223 111 14.00
380 159 15.80
477 228 17.30
587 248 18.70
647 248 20.00
679 262 21.00
692 223 21.80
634 163 22.30
526 130 22.40
372 109 22.10
215 81 21.20
82 42 20.10
1 1 18.80
0 0 18.10
0 0 17.30
0 0 16.60
0 0 15.90
0 0 15.50
0 0 15.10
0 0 14.90
0 0 14.70
0 0 14.60
3 3 14.60
128 76 16.10
136 124 16.50
301 208 17.90
538 198 19.70
776 221 21.90
628 297 22.90
545 355 23.50
438 356 23.60
323 279 23.30
45 45 22.00
251 191 21.70
162 114 21.10
14 14 20.20
0 0 19.30
0 0 19.20
0 0 19.10
0 0 19.00
0 0 18.90
0 0 18.90
0 0 19.00
0 0 19.00
0 0 19.00
0 0 19.10
1 1 19.10
58 56 19.90
84 84 20.30
170 167 21.10
399 271 22.80
531 304 24.50
514 356 25.70
248 236 25.70
267 260 25.70
260 252 25.80
219 210 25.60
36 36 24.80
37 37 24.20
26 26 23.60
0 0 23.00
0 0 22.60
0 0 22.20
0 0 21.80
0 0 21.10
0 0 20.50
0 0 20.10
0 0 20.00
0 0 18.90
0 0 19.40
1 1 19.50
24 24 19.80
58 58 20.00
102 102 20.40
142 142 20.80
157 157 21.10
174 172 21.30
171 171 21.50
141 141 21.50
132 132 21.50
115 115 21.40
92 92 21.30
64 64 21.20
24 24 21.00
0 0 20.70
0 0 20.30
0 0 19.80
0 0 19.30
0 0 19.00
0 0 18.90
0 0 18.70
0 0 18.60
0 0 18.40
0 0 18.40
1 1 18.40
62 58 19.30
133 128 20.20
221 206 21.20
311 266 22.30
319 300 23.10
369 345 23.80
402 344 24.50
371 345 24.90
299 284 25.00
232 224 24.90
184 175 24.70
122 110 24.20
46 41 23.60
0 0 22.90
0 0 22.30
0 0 21.70
0 0 21.10
0 0 20.50
0 0 20.00
0 0 19.50
0 0 19.20
0 0 18.90
0 0 18.70
1 1 18.70
38 38 19.20
116 114 20.00
183 176 20.80
241 231 21.20
302 288 22.20
318 302 22.80
322 304 23.30
327 309 23.60
297 280 23.80
240 230 23.90
190 179 23.80
106 102 23.40
35 35 22.80
0 0 22.30
0 0 21.20
0 0 20.10
0 0 19.10
0 0 18.00
0 0 17.10
0 0 16.10
0 0 15.50
0 0 15.00
0 0 14.60
2 2 14.50
90 48 15.50
219 96 16.80
332 173 18.10
473 216 19.50
592 221 20.90
715 194 22.30
676 252 23.30
595 288 23.70
534 255 23.90
439 191 23.90
301 150 23.40
141 107 22.40
49 35 21.30
0 0 20.20
0 0 19.70
0 0 19.10
0 0 18.50
0 0 18.00
0 0 17.90
0 0 17.80
0 0 17.80
0 0 17.90
0 0 17.90
2 2 18.00
89 57 18.90
178 121 19.80
472 158 21.70
392 253 22.60
492 319 23.50
546 331 24.30
512 355 24.80
60 60 23.90
53 53 23.10
43 43 22.50
42 42 21.80
17 17 21.40
5 5 21.00
0 0 20.60
0 0 20.50
0 0 20.40
0 0 20.30
0 0 20.20
0 0 19.70
0 0 19.30
0 0 19.00
0 0 18.80
0 0 18.60
2 2 18.60
90 44 19.70
247 69 21.40
377 123 23.00
481 194 24.50
646 170 26.20
661 232 27.40
622 294 28.20
522 349 28.50
463 293 28.70
280 242 28.10
224 186 27.50
146 109 26.70
39 34 25.70
0 0 24.70
0 0 23.70
0 0 22.70
0 0 21.60
0 0 20.60
0 0 19.50
0 0 18.70
0 0 18.20
0 0 17.30
0 0 17.20
0 0 17.20
32 32 17.50
82 82 17.90
104 104 18.10
138 138 18.50
184 182 18.90
196 192 19.00
181 179 18.40
181 179 19.30
162 162 19.40
111 111 19.20
58 58 19.00
23 23 18.60
8 8 18.30
0 0 18.00
0 0 17.50
0 0 16.90
0 0 16.50
0 0 16.00
0 0 15.90
0 0 15.80
0 0 15.70
0 0 15.70
0 0 15.60
1 1 15.60
70 44 16.70
178 131 18.10
265 211 19.40
293 253 20.40
379 309 21.50
273 262 21.80
244 238 21.90
177 176 21.70
151 151 21.30
118 118 21.00
29 29 20.30
77 77 19.90
4 4 19.30
0 0 18.50
0 0 18.50
0 0 18.20
0 0 17.70
0 0 17.40
0 0 17.00
0 0 16.60
0 0 16.40
0 0 16.20
0 0 16.00
0 0 16.00
43 43 16.60
108 106 17.50
194 184 18.50
274 251 19.60
337 311 20.70
331 314 21.40
355 333 22.00
296 284 22.30
264 253 22.40
187 184 22.20
105 105 21.70
44 44 20.90
4 4 20.00
0 0 19.90
0 0 19.70
0 0 19.30
0 0 19.00
0 0 18.70
0 0 18.60
0 0 18.40
0 0 18.30
0 0 18.20
0 0 18.10
0 0 18.10
64 42 19.20
164 113 20.70
137 137 21.30
114 114 21.40
228 223 22.10
268 260 22.90
247 242 23.30
135 135 23.20
227 220 23.50
201 196 23.60
177 161 23.10
117 92 23.40
6 6 22.60
0 0 21.90
0 0 21.40
0 0 20.90
0 0 20.20
0 0 19.70
0 0 19.10
0 0 18.80
0 0 18.60
0 0 18.20
0 0 18.20
0 0 18.30
7 7 18.50
20 20 18.60
35 35 19.00
47 47 18.50
57 57 19.40
63 63 19.60
64 64 19.80
406 323 21.20
370 294 22.10
327 242 22.80
283 139 23.30
182 71 23.40
16 16 23.00
0 0 22.00
0 0 21.10
0 0 20.10
0 0 19.20
0 0 18.20
0 0 16.50
0 0 14.50
0 0 13.40
0 0 12.30
0 0 11.50
0 0 11.30
81 34 12.40
234 50 14.40
401 57 16.50
548 67 18.60
663 76 20.50
727 87 22.10
749 84 23.40
710 82 24.20
630 68 24.50
499 60 24.40
340 54 23.70
173 46 22.30
13 13 20.60
0 0 18.90
0 0 17.30
0 0 15.70
0 0 14.00
0 0 12.20
0 0 11.50
0 0 10.70
0 0 10.30
0 0 9.80
0 0 9.50
0 0 9.50
65 38 10.50
206 73 12.40
325 144 14.40
470 164 16.40
533 247 18.00
632 218 19.70
670 234 21.00
517 315 21.50
463 252 21.70
398 180 21.70
303 93 21.20
145 60 20.20
14 14 18.80
0 0 17.60
0 0 16.50
0 0 15.40
0 0 14.20
0 0 13.00
0 0 12.20
0 0 11.30
0 0 10.80
0 0 10.30
0 0 10.00
0 0 9.90
73 35 11.10
217 58 13.00
380 70 15.30
513 95 17.40
623 110 19.40
677 137 21.10
692 141 22.40
645 163 23.20
552 146 23.50
437 117 23.50
295 99 22.80
146 64 21.60
9 9 20.00
0 0 18.70
0 0 17.40
0 0 16.20
0 0 14.90
0 0 13.50
0 0 12.50
0 0 11.40
0 0 10.90
0 0 10.40
0 0 10.10
0 0 10.10
51 36 10.70
153 116 11.70
266 186 12.90
585 182 15.10
647 97 16.70
687 157 18.00
644 260 18.80
295 265 18.50
94 94 17.40
38 38 16.40
26 26 15.50
13 13 14.70
2 2 13.90
0 0 13.30
0 0 12.80
0 0 12.30
0 0 11.70
0 0 11.20
0 0 10.70
0 0 10.10
0 0 9.80
0 0 9.60
0 0 9.40
0 0 9.40
39 36 10.00
173 95 11.80
285 170 13.70
281 239 14.80
150 150 14.70
365 313 15.70
324 286 16.30
526 310 17.50
612 146 18.70
496 124 19.40
260 127 19.20
136 52 18.50
3 3 17.40
0 0 16.20
0 0 14.90
0 0 13.60
0 0 12.30
0 0 11.00
0 0 9.70
0 0 8.30
0 0 7.50
0 0 6.80
0 0 6.30
0 0 6.10
51 36 6.90
173 93 8.30
294 146 9.90
423 190 11.60
520 228 13.20
530 299 14.40
486 330 15.10
579 235 15.90
555 170 16.40
388 181 16.40
212 148 15.70
78 71 14.60
2 2 13.30
0 0 12.20
0 0 11.10
0 0 10.10
0 0 9.00
0 0 7.90
0 0 7.30
0 0 6.50
0 0 6.10
0 0 5.80
0 0 5.50
0 0 5.50
66 33 6.50
213 45 8.50
370 62 10.80
506 81 13.10
613 97 15.20
663 126 16.90
677 129 18.10
637 126 19.00
561 100 19.40
440 80 19.40
288 68 18.70
138 44 17.50
5 5 15.90
0 0 14.80
0 0 13.70
0 0 12.60
0 0 11.50
0 0 10.40
0 0 9.60
0 0 8.70
0 0 8.20
0 0 7.70
0 0 7.30
0 0 7.30
44 32 7.90
155 89 9.30
255 194 10.80
343 269 12.30
441 293 13.80
528 290 15.30
607 241 16.60
631 162 17.70
598 112 18.50
455 68 18.70
310 66 18.30
132 47 17.30
4 4 15.90
0 0 15.50
0 0 15.00
0 0 14.60
0 0 14.10
0 0 13.60
0 0 13.50
0 0 13.50
0 0 13.50
0 0 13.50
0 0 13.50
0 0 13.60
21 21 14.00
19 19 14.10
177 159 15.70
145 145 16.40
202 195 17.10
465 307 19.20
307 286 20.00
252 242 20.40
303 253 20.90
378 170 21.50
240 113 21.70
139 74 21.40
6 6 20.50
0 0 19.50
0 0 18.40
0 0 17.40
0 0 16.30
0 0 15.30
0 0 13.90
0 0 12.50
0 0 11.70
0 0 10.90
0 0 10.40
0 0 10.30
44 29 10.90
165 84 12.20
262 186 13.60
388 206 15.20
495 228 16.70
534 274 17.90
553 276 18.80
582 184 19.60
502 158 20.00
466 118 20.20
283 65 19.80
134 45 18.90
5 5 17.60
0 0 16.60
0 0 15.60
0 0 14.70
0 0 13.60
0 0 12.50
0 0 12.10
0 0 11.70
0 0 11.30
0 0 11.10
0 0 10.80
0 0 10.70
5 5 10.90
67 67 11.80
153 149 13.10
217 208 14.20
275 255 15.20
434 314 16.70
474 324 17.90
462 301 18.70
413 238 19.20
315 179 19.30
218 107 19.10
88 57 18.30
3 3 17.30
0 0 16.30
0 0 15.40
0 0 14.40
0 0 13.30
0 0 12.30
0 0 11.30
0 0 10.10
0 0 8.90
0 0 8.30
0 0 7.60
0 0 7.20
12 12 7.40
81 81 8.10
165 158 8.90
229 215 9.70
275 258 10.20
296 279 10.80
305 289 11.10
314 292 11.10
252 240 11.30
180 175 11.10
109 109 10.60
42 42 10.00
1 1 9.30
0 0 9.10
0 0 8.80
0 0 8.60
0 0 8.40
0 0 8.20
0 0 8.40
0 0 8.80
0 0 9.10
0 0 9.30
0 0 9.50
0 0 9.70
13 13 10.20
102 94 11.70
193 168 13.30
316 251 15.10
359 282 16.50
422 316 17.70
425 322 18.70
363 296 19.10
308 268 19.30
234 204 19.10
138 130 18.50
55 53 17.60
1 1 16.70
0 0 16.00
0 0 15.30
0 0 14.60
0 0 13.80
0 0 13.00
0 0 12.00
0 0 11.00
0 0 9.90
0 0 9.30
0 0 8.70
0 0 8.30
18 18 8.70
157 76 10.60
295 109 12.50
384 191 14.00
511 188 15.60
509 272 16.60
525 264 17.40
528 218 17.90
505 138 18.30
420 84 18.30
245 72 17.60
92 45 16.40
1 1 15.10
0 0 14.30
0 0 13.50
0 0 12.60
0 0 11.80
0 0 11.00
0 0 10.60
0 0 10.10
0 0 9.70
0 0 9.50
0 0 9.20
0 0 9.00
12 12 9.40
121 99 10.90
224 177 12.40
309 249 13.80
369 290 14.90
404 310 15.80
366 307 16.30
324 280 16.50
275 251 16.50
204 191 16.10
135 121 15.50
44 44 14.70
1 1 13.80
0 0 13.30
0 0 12.90
0 0 12.40
0 0 12.00
0 0 11.60
0 0 11.30
0 0 11.00
0 0 10.80
0 0 10.60
0 0 10.50
0 0 10.40
17 17 10.90
177 93 13.60
174 116 14.40
43 43 13.70
173 171 14.20
359 295 15.50
291 275 16.00
287 250 16.50
48 48 16.00
443 179 16.80
310 81 17.10
120 46 16.70
3 3 15.90
0 0 15.00
0 0 14.10
0 0 13.20
0 0 12.30
0 0 11.40
0 0 10.50
0 0 9.50
0 0 8.60
0 0 8.10
0 0 7.60
0 0 7.20
13 13 7.50
149 71 9.40
284 114 11.30
399 167 13.00
491 192 14.50
543 210 15.70
545 226 16.50
508 219 17.00
436 191 17.20
330 141 16.90
204 82 16.10
77 37 15.00
0 0 13.70
0 0 12.90
0 0 12.20
0 0 11.50
0 0 10.70
0 0 10.00
0 0 9.60
0 0 9.10
0 0 8.70
0 0 8.50
0 0 8.20
0 0 8.10
12 12 8.40
173 42 10.90
326 56 13.30
466 64 15.50
569 77 17.40
627 88 18.90
637 91 20.10
600 81 20.80
518 65 21.00
395 52 20.80
243 47 19.90
91 32 18.60
0 0 17.10
0 0 16.30
0 0 15.50
0 0 14.70
0 0 13.90
0 0 13.10
0 0 12.40
0 0 11.60
0 0 10.90
0 0 10.50
0 0 10.10
0 0 9.90
11 11 10.20
181 40 12.60
347 47 15.10
492 51 17.30
602 58 19.20
666 64 20.70
677 65 21.90
632 61 22.60
539 54 22.80
406 48 22.60
245 43 21.60
86 30 20.20
0 0 18.70
0 0 17.50
0 0 16.40
0 0 15.30
0 0 14.10
0 0 12.90
0 0 11.90
0 0 10.80
0 0 9.70
0 0 9.10
0 0 8.50
0 0 8.10
10 10 8.30
174 39 10.60
343 48 12.90
493 53 15.10
607 61 16.90
672 67 18.40
684 69 19.50
642 66 20.20
545 58 20.40
406 50 20.00
243 43 19.10
83 29 17.70
0 0 16.10
0 0 15.20
0 0 14.20
0 0 13.20
0 0 12.20
0 0 11.20
0 0 10.60
0 0 9.90
0 0 9.20
0 0 8.90
0 0 8.60
0 0 8.30
3 3 8.40
63 63 9.20
84 84 9.70
201 191 10.80
260 242 11.70
427 281 13.20
481 273 14.40
703 251 16.10
392 224 16.40
192 166 15.90
157 98 15.40
79 49 14.70
0 0 13.80
0 0 13.10
0 0 12.50
0 0 11.90
0 0 11.30
0 0 10.70
0 0 10.10
0 0 9.50
0 0 8.90
0 0 8.60
0 0 8.30
0 0 8.10
9 9 8.30
169 66 10.40
280 118 12.00
178 171 12.10
336 259 13.00
534 222 14.50
424 284 15.10
478 243 15.70
179 175 15.10
140 138 14.50
117 99 13.80
48 36 13.00
0 0 12.20
0 0 11.80
0 0 11.30
0 0 10.90
0 0 10.50
0 0 10.00
0 0 9.00
0 0 8.90
0 0 8.40
0 0 8.50
0 0 8.40
0 0 8.30
2 2 8.40
19 19 8.50
38 38 8.50
55 55 8.70
68 68 8.80
77 77 9.00
79 79 9.10
69 69 9.00
60 60 9.20
42 42 7.70
22 22 8.90
6 6 8.60
0 0 8.70
0 0 8.40
0 0 8.20
0 0 7.80
0 0 7.60
0 0 7.30
0 0 7.00
0 0 6.60
0 0 6.30
0 0 6.10
0 0 5.90
0 0 5.80
7 7 6.00
127 61 7.80
266 85 9.80
323 196 11.20
446 199 12.70
483 225 14.00
472 243 14.80
418 252 15.20
456 137 15.60
282 143 15.40
170 67 14.70
12 12 13.30
0 0 12.70
0 0 12.00
0 0 11.40
0 0 10.70
0 0 10.00
0 0 9.40
0 0 8.80
0 0 8.20
0 0 7.50
0 0 7.20
0 0 6.90
0 0 6.70
11 11 6.90
170 47 9.10
343 110 11.40
342 194 12.60
333 260 13.20
311 269 13.50
278 261 13.50
297 264 13.70
272 218 13.70
321 154 13.80
87 80 13.00
24 24 12.00
0 0 11.00
0 0 10.00
0 0 9.00
0 0 8.00
0 0 7.00
0 0 6.00
0 0 5.20
0 0 4.30
0 0 3.50
0 0 3.10
0 0 2.60
0 0 2.30
5 5 2.40
73 68 3.80
164 137 5.40
142 142 6.00
351 248 8.20
306 261 9.20
176 175 9.20
141 141 9.00
334 209 9.70
323 111 10.20
207 73 10.20
15 15 9.00
0 0 8.00
0 0 7.10
0 0 6.10
0 0 5.20
0 0 4.30
0 0 3.50
0 0 2.80
0 0 2.30
0 0 1.70
0 0 1.40
0 0 1.10
0 0 1.00
4 4 1.10
43 43 1.90
92 92 2.70
211 193 4.30
297 248 5.80
458 245 8.00
475 230 9.60
381 266 10.40
196 183 10.10
47 47 8.90
15 15 7.70
13 13 6.70
0 0 6.30
0 0 5.90
0 0 5.60
0 0 5.20
0 0 4.90
0 0 4.50
0 0 4.00
0 0 3.50
0 0 2.90
0 0 2.60
0 0 2.20
0 0 2.00
4 4 2.10
148 77 4.90
222 116 6.90
354 160 9.20
313 243 10.30
214 203 10.20
404 258 11.30
304 255 11.60
229 208 11.40
212 156 11.10
100 88 10.10
11 11 8.70
0 0 8.40
0 0 8.00
0 0 7.70
0 0 7.30
0 0 7.00
0 0 6.60
0 0 6.70
0 0 6.70
0 0 6.80
0 0 6.70
0 0 6.60
0 0 6.90
1 1 6.90
25 25 7.50
50 50 7.70
83 83 8.80
95 95 9.40
116 116 10.00
112 112 10.30
113 113 10.60
105 105 10.80
88 88 10.90
48 48 10.60
4 4 10.20
0 0 9.90
0 0 9.60
0 0 9.30
0 0 9.10
0 0 8.80
0 0 8.50
0 0 8.20
0 0 7.90
0 0 7.50
0 0 7.30
0 0 7.10
0 0 7.00
1 1 7.00
41 41 7.90
102 102 9.10
178 172 10.50
250 235 11.90
270 250 13.10
262 247 13.80
210 205 14.10
206 196 14.30
160 149 14.20
85 80 13.60
10 10 12.60
0 0 12.20
0 0 11.70
0 0 11.30
0 0 10.80
0 0 10.40
0 0 9.90
0 0 9.60
0 0 9.30
0 0 8.90
0 0 8.90
0 0 8.80
0 0 8.70
1 1 8.80
10 10 9.00
27 27 9.40
34 34 9.70
60 60 10.10
76 76 10.60
72 72 10.90
430 227 13.10
369 135 14.60
277 79 15.40
144 53 15.40
10 10 14.70
0 0 14.00
0 0 13.30
0 0 12.60
0 0 11.90
0 0 11.30
0 0 10.60
0 0 9.60
0 0 8.60
0 0 7.60
0 0 7.10
0 0 6.50
0 0 6.10
2 2 6.10
109 41 8.30
244 67 10.80
362 101 13.30
433 156 15.30
412 251 16.40
452 215 17.40
438 179 18.10
401 107 18.40
261 88 17.90
135 52 16.80
9 9 15.10
0 0 14.50
0 0 13.80
0 0 13.10
0 0 12.50
0 0 11.80
0 0 11.20
0 0 10.90
0 0 10.60
0 0 10.30
0 0 10.20
0 0 10.00
0 0 9.90
1 1 10.00
17 17 10.20
40 40 10.40
64 64 10.60
80 80 11.30
89 89 11.70
88 88 12.00
84 84 12.10
74 74 12.10
50 50 12.10
24 24 11.60
2 2 11.50
0 0 11.20
0 0 10.90
0 0 10.60
0 0 10.20
0 0 9.80
0 0 8.60
0 0 9.30
0 0 9.00
0 0 8.70
0 0 8.50
0 0 8.40
0 0 8.30
1 1 8.30
61 55 9.60
136 121 11.20
221 190 12.90
270 236 14.40
320 272 15.60
314 269 16.50
328 258 17.20
258 211 17.40
173 143 17.20
91 74 16.40
5 5 15.30
0 0 14.80
0 0 14.20
0 0 13.60
0 0 13.10
0 0 12.60
0 0 12.00
0 0 11.50
0 0 11.00
0 0 10.40
0 0 10.20
0 0 9.90
0 0 9.70
1 1 9.80
96 55 11.80
209 95 14.10
355 102 16.70
465 105 19.10
448 192 20.60
457 180 21.80
441 130 22.50
380 106 22.90
249 79 22.40
111 53 21.10
4 4 19.50
0 0 18.60
0 0 17.70
0 0 16.80
0 0 15.90
0 0 15.00
0 0 14.10
0 0 13.20
0 0 12.30
0 0 11.40
0 0 11.00
0 0 10.60
0 0 10.30
1 1 10.40
102 37 12.30
249 48 14.80
389 49 17.20
491 53 19.30
549 57 21.10
559 56 22.50
516 53 23.30
418 49 23.60
286 46 23.20
133 39 22.00
4 4 20.40
0 0 19.50
0 0 18.60
0 0 17.70
0 0 16.80
0 0 15.90
0 0 15.00
0 0 13.80
0 0 12.60
0 0 11.40
0 0 10.80
0 0 10.20
0 0 9.80
1 1 9.70
84 47 11.30
212 72 13.40
341 104 15.70
491 97 18.10
546 104 19.90
470 149 20.90
419 161 21.40
337 131 21.40
192 127 20.50
79 68 19.20
2 2 17.70
0 0 16.70
0 0 15.80
0 0 14.90
0 0 13.90
0 0 12.90
0 0 11.90
0 0 11.20
0 0 10.40
0 0 9.70
0 0 9.30
0 0 8.90
0 0 8.60
1 1 8.70
82 41 10.40
198 77 12.50
339 99 15.10
424 113 17.20
497 97 19.10
494 108 20.50
464 79 21.30
377 68 21.60
254 55 21.20
119 45 20.00
4 4 18.30
0 0 17.30
0 0 16.30
0 0 15.20
0 0 14.10
0 0 13.10
0 0 12.00
0 0 10.90
0 0 9.80
0 0 8.80
0 0 8.20
0 0 7.60
0 0 7.20
0 0 7.20
92 34 9.00
240 44 11.60
376 48 14.30
479 51 16.60
544 54 18.50
548 55 19.90
501 51 20.70
407 49 20.90
272 44 20.30
119 37 18.90
2 2 17.10
0 0 16.10
0 0 15.20
0 0 14.30
0 0 13.30
0 0 12.30
0 0 11.30
0 0 10.60
0 0 9.80
0 0 9.00
0 0 8.60
0 0 8.20
0 0 8.00
0 0 8.00
64 41 9.30
183 82 11.30
280 136 13.40
403 129 15.60
429 164 17.20
454 132 18.40
405 138 19.10
352 83 19.40
231 72 19.00
111 56 18.00
3 3 16.50
0 0 15.70
0 0 14.90
0 0 14.10
0 0 13.30
0 0 12.40
0 0 11.60
0 0 10.90
0 0 10.20
0 0 9.40
0 0 9.10
0 0 8.70
0 0 8.40
0 0 8.40
16 16 8.70
32 32 9.00
51 51 9.30
42 42 9.30
38 38 9.20
62 62 9.50
386 193 11.20
309 121 12.20
216 73 12.60
90 50 12.40
2 2 11.80
0 0 11.50
0 0 11.20
0 0 10.90
0 0 10.50
0 0 10.20
0 0 9.90
0 0 9.70
0 0 9.60
0 0 9.50
0 0 9.40
0 0 9.40
0 0 9.30
0 0 9.40
20 20 9.90
42 42 10.20
51 51 10.80
64 64 11.20
39 39 11.20
63 63 11.40
386 187 13.50
297 126 14.60
192 98 15.00
80 46 14.80
1 1 14.10
0 0 13.70
0 0 13.20
0 0 12.80
0 0 12.30
0 0 11.90
0 0 11.40
0 0 10.80
0 0 10.10
0 0 9.50
0 0 9.20
0 0 8.80
0 0 8.60
0 0 8.60
45 40 9.50
122 105 10.80
208 172 12.30
250 213 13.50
315 249 14.80
304 251 15.50
289 231 16.10
235 185 16.20
137 116 15.80
55 50 15.10
1 1 14.00
0 0 13.30
0 0 12.50
0 0 11.80
0 0 11.00
0 0 10.30
0 0 9.50
0 0 8.80
0 0 8.00
0 0 7.20
0 0 6.80
0 0 6.30
0 0 6.00
0 0 5.90
45 39 6.70
124 104 7.90
211 171 9.30
278 222 10.70
316 251 11.80
311 251 12.50
254 216 12.70
179 167 12.60
125 110 12.10
49 46 11.20
0 0 10.20
0 0 10.20
0 0 10.20
0 0 10.20
0 0 10.30
0 0 10.30
0 0 10.30
0 0 10.60
0 0 10.90
0 0 11.30
0 0 11.50
0 0 11.70
0 0 11.80
0 0 11.90
28 28 12.60
97 93 14.00
115 115 14.90
147 147 15.70
168 166 16.50
165 164 16.60
125 125 17.10
85 85 17.00
41 41 16.60
18 18 16.10
0 0 15.60
0 0 15.40
0 0 15.10
0 0 14.90
0 0 14.60
0 0 14.40
0 0 13.90
0 0 13.50
0 0 12.90
0 0 12.40
0 0 12.10
0 0 11.80
0 0 11.70
0 0 11.70
25 25 12.00
110 94 13.00
161 151 13.90
182 176 14.60
215 206 15.20
179 175 15.40
78 78 15.20
28 28 14.70
52 52 14.40
7 7 13.90
0 0 13.20
0 0 13.00
0 0 12.60
0 0 12.20
0 0 11.70
0 0 11.30
0 0 10.80
0 0 9.90
0 0 9.00
0 0 8.00
0 0 7.50
0 0 7.10
0 0 6.70
0 0 6.70
15 15 7.00
111 90 8.30
41 41 8.30
62 62 8.40
151 151 9.10
473 151 11.30
480 89 13.10
367 84 13.90
202 82 13.90
87 45 13.30
1 1 12.30
0 0 11.70
0 0 11.20
0 0 10.70
0 0 10.20
0 0 9.60
0 0 9.10
0 0 8.70
0 0 8.30
0 0 7.90
0 0 7.70
0 0 7.50
0 0 7.30
0 0 7.30
12 12 7.50
39 39 7.80
57 57 8.20
84 84 8.50
101 101 8.80
100 100 8.50
93 93 9.10
64 64 9.20
38 38 8.80
16 16 8.80
0 0 8.60
0 0 8.20
0 0 7.80
0 0 7.40
0 0 7.10
0 0 6.80
0 0 6.40
0 0 5.90
0 0 5.40
0 0 5.00
0 0 4.70
0 0 4.50
0 0 4.40
0 0 4.40
44 32 5.30
139 74 6.90
246 110 8.90
313 157 10.60
393 145 12.30
438 105 13.80
385 89 14.70
309 65 15.00
186 60 14.60
71 41 13.40
0 0 12.10
0 0 11.30
0 0 10.60
0 0 9.90
0 0 9.20
0 0 8.50
0 0 7.80
0 0 7.10
0 0 6.40
0 0 5.70
0 0 5.40
0 0 5.10
0 0 4.90
0 0 4.70
12 12 5.00
199 45 7.20
345 136 9.10
249 184 9.50
332 209 10.10
188 181 9.90
182 168 9.60
28 28 8.70
17 17 7.90
6 6 7.20
0 0 6.60
0 0 6.10
0 0 5.60
0 0 5.10
0 0 4.70
0 0 4.20
0 0 3.70
0 0 3.30
0 0 2.80
0 0 2.30
0 0 2.00
0 0 1.70
0 0 1.50
0 0 1.30
14 14 1.70
83 78 2.80
234 136 4.70
160 153 5.10
283 213 6.10
220 201 6.50
249 192 6.80
166 144 6.70
138 92 6.40
71 45 5.70
0 0 4.80
0 0 4.60
0 0 4.40
0 0 4.20
0 0 3.90
0 0 3.70
0 0 3.50
0 0 3.50
0 0 3.60
0 0 3.60
0 0 3.70
0 0 3.70
0 0 3.80
0 0 3.90
4 4 4.00
20 20 4.40
34 34 4.50
34 34 4.90
44 44 5.30
49 49 5.50
325 168 7.30
238 116 8.30
146 79 8.60
42 31 8.20
0 0 7.70
0 0 7.30
0 0 6.80
0 0 6.40
0 0 5.90
0 0 5.50
0 0 5.10
0 0 4.50
0 0 3.70
0 0 3.00
0 0 2.50
0 0 2.10
0 0 1.80
0 0 1.50
3 3 1.50
37 37 1.90
62 62 2.20
59 59 2.30
141 141 2.80
206 191 3.40
232 185 3.90
224 129 4.30
172 89 4.30
60 35 4.00
0 0 3.40
0 0 3.30
0 0 3.30
0 0 3.30
0 0 3.20
0 0 3.20
0 0 3.20
0 0 3.40
0 0 3.70
0 0 4.10
0 0 4.20
0 0 4.40
0 0 4.60
0 0 4.70
9 9 5.20
84 77 6.80
134 126 8.00
228 179 9.70
226 200 10.60
189 182 11.10
173 166 11.30
119 118 11.10
52 52 10.40
5 5 9.60
0 0 9.40
0 0 9.20
0 0 9.00
0 0 8.80
0 0 8.60
0 0 8.40
0 0 8.20
0 0 7.70
0 0 7.30
0 0 6.80
0 0 6.60
0 0 6.40
0 0 6.30
0 0 6.10
14 14 6.50
63 63 7.20
168 128 8.30
307 155 9.80
451 150 11.50
356 175 12.20
142 140 11.70
46 46 10.80
13 13 9.90
4 4 9.20
0 0 8.90
0 0 8.70
0 0 8.40
0 0 8.20
0 0 8.00
0 0 7.70
0 0 7.50
0 0 7.10
0 0 6.80
0 0 6.50
0 0 6.30
0 0 6.10
0 0 6.00
0 0 5.90
5 5 6.10
42 42 6.70
86 86 7.40
127 127 8.00
154 152 8.60
202 187 9.20
216 176 9.70
107 107 9.70
44 44 9.30
4 4 8.70
0 0 8.20
0 0 7.80
0 0 7.30
0 0 6.70
0 0 6.40
0 0 5.40
0 0 4.40
0 0 3.50
0 0 2.60
0 0 1.70
0 0 1.00
0 0 0.30
0 0 -0.20
0 0 -0.70
6 6 -0.60
76 70 0.50
127 122 1.40
181 169 2.30
235 201 3.20
245 196 3.80
152 147 3.70
120 118 3.40
68 68 2.80
3 3 1.90
0 0 1.30
0 0 0.80
0 0 0.20
0 0 -0.30
0 0 -0.90
0 0 -1.40
0 0 -2.00
0 0 -2.10
0 0 -2.10
0 0 -2.10
0 0 -2.10
0 0 -2.00
0 0 -2.00
0 0 -2.00
3 3 -1.70
12 12 -1.40
31 31 -0.90
254 156 2.30
242 192 4.20
350 163 6.50
199 168 6.90
130 125 6.70
72 71 5.90
6 6 4.70
0 0 4.30
0 0 3.80
0 0 3.40
0 0 2.90
0 0 2.50
0 0 2.10
0 0 1.60
0 0 0.90
0 0 0.00
0 0 -0.80
0 0 -1.20
0 0 -1.70
0 0 -2.00
0 0 -2.40
7 7 -2.10
127 77 0.70
172 123 2.30
198 164 3.40
328 157 5.20
306 161 6.30
297 137 7.00
193 126 6.80
125 64 5.90
24 23 4.50
0 0 4.10
0 0 3.70
0 0 3.30
0 0 2.90
0 0 2.60
0 0 2.20
0 0 1.80
0 0 1.80
0 0 1.70
0 0 1.70
0 0 1.70
0 0 1.70
0 0 1.70
0 0 1.60
2 2 1.70
15 15 2.00
31 31 2.40
43 43 2.80
47 47 3.10
50 50 3.30
45 45 3.40
36 36 3.40
19 19 2.70
3 3 2.80
0 0 2.90
0 0 2.90
0 0 2.60
0 0 2.40
0 0 1.60
0 0 2.40
0 0 2.50
0 0 2.60
0 0 2.60
0 0 2.50
0 0 2.50
0 0 2.50
0 0 2.50
0 0 2.50
2 2 2.60
40 40 3.60
79 79 4.70
104 104 5.60
122 122 6.30
123 123 6.90
102 102 7.10
72 72 6.90
44 44 6.60
4 4 5.80
0 0 5.70
0 0 5.50
0 0 5.20
0 0 5.30
0 0 5.10
0 0 5.00
0 0 4.80
0 0 4.20
0 0 4.30
0 0 4.30
0 0 4.10
0 0 4.10
0 0 4.00
0 0 4.00
1 1 4.00
21 21 4.50
40 40 4.90
62 62 5.40
66 66 5.70
74 74 6.00
65 65 6.10
43 43 6.00
22 22 5.80
2 2 5.50
0 0 5.40
0 0 5.20
0 0 5.10
0 0 5.00
0 0 4.90
0 0 4.80
0 0 4.70
0 0 4.30
0 0 4.50
0 0 4.30
0 0 4.40
0 0 4.30
0 0 4.20
0 0 4.30
2 2 4.40
17 17 4.80
35 35 5.20
50 50 5.60
58 58 6.00
62 62 6.30
50 50 6.40
38 38 6.30
20 20 6.10
2 2 5.70
0 0 5.70
0 0 5.00
0 0 5.60
0 0 5.40
0 0 5.60
0 0 5.50
0 0 5.50
0 0 5.50
0 0 5.50
0 0 5.50
0 0 5.50
0 0 5.50
0 0 5.50
0 0 5.50
4 4 5.80
53 53 7.30
103 101 8.70
162 152 10.40
171 164 11.40
179 170 12.20
111 111 12.20
135 115 12.40
64 62 11.90
2 2 10.80
0 0 10.60
0 0 10.40
0 0 10.20
0 0 9.90
0 0 9.70
0 0 9.50
0 0 9.30
0 0 8.90
0 0 8.70
0 0 8.40
0 0 8.20
0 0 8.10
0 0 8.00
0 0 7.90
1 1 8.00
38 38 8.90
76 76 9.90
128 127 11.00
137 136 11.80
136 136 12.30
121 121 12.60
85 85 12.50
39 39 12.00
2 2 11.30
0 0 10.90
0 0 10.50
0 0 10.10
0 0 9.70
0 0 9.30
0 0 8.80
0 0 8.40
0 0 8.00
0 0 7.60
0 0 7.10
0 0 6.90
0 0 6.70
0 0 6.60
0 0 6.40
4 4 6.60
86 49 8.70
192 72 11.10
273 112 13.30
253 171 14.50
304 141 15.60
288 109 16.30
240 58 16.60
124 40 15.90
9 9 14.40
0 0 14.10
0 0 13.80
0 0 13.60
0 0 13.30
0 0 13.10
0 0 12.80
0 0 12.50
0 0 12.30
0 0 12.00
0 0 11.70
0 0 11.50
0 0 11.40
0 0 11.30
0 0 11.20
1 1 11.30
32 32 12.00
68 68 12.90
91 91 13.60
110 110 14.20
116 116 14.50
101 101 14.90
66 66 14.80
32 32 14.50
2 2 13.90
0 0 13.50
0 0 13.00
0 0 12.50
0 0 12.10
0 0 11.60
0 0 11.20
0 0 10.70
0 0 10.20
0 0 9.60
0 0 9.00
0 0 8.70
0 0 8.40
0 0 8.20
0 0 7.80
1 1 7.60
21 21 8.20
47 47 8.60
65 65 8.90
75 75 9.20
71 71 9.30
71 71 9.40
60 60 9.40
26 26 9.20
2 2 8.90
0 0 8.50
0 0 8.00
0 0 7.70
0 0 7.30
0 0 6.90
0 0 6.50
0 0 6.10
0 0 5.90
0 0 5.70
0 0 5.50
0 0 5.40
0 0 5.30
0 0 5.30
0 0 5.20
1 1 5.30
54 47 6.70
88 87 7.90
60 60 8.10
98 98 8.60
43 43 8.50
287 139 10.30
150 108 10.70
74 62 10.50
2 2 9.60
0 0 9.30
0 0 8.90
0 0 8.50
0 0 8.20
0 0 7.80
0 0 7.40
0 0 7.10
0 0 6.60
0 0 6.20
0 0 5.80
0 0 5.60
0 0 5.40
0 0 5.30
0 0 5.20
1 1 5.30
16 16 5.60
19 19 5.80
52 52 6.40
71 71 6.90
88 88 7.50
282 138 9.30
229 57 10.30
125 34 10.50
4 4 9.70
0 0 9.20
0 0 8.70
0 0 8.20
0 0 7.70
0 0 7.20
0 0 6.80
0 0 6.30
0 0 5.70
0 0 5.10
0 0 4.50
0 0 4.20
0 0 3.90
0 0 3.70
0 0 3.50
1 1 3.50
13 13 3.50
30 30 3.70
48 48 3.80
59 59 3.40
61 61 4.00
53 53 4.00
37 37 3.90
19 19 3.60
1 1 3.70
0 0 3.30
0 0 3.10
0 0 2.80
0 0 2.40
0 0 2.10
0 0 1.80
0 0 1.50
0 0 1.10
0 0 0.70
0 0 0.30
0 0 0.00
0 0 -0.20
0 0 -0.30
0 0 -0.40
1 1 -0.40
98 29 2.10
221 48 5.10
322 60 8.00
381 67 10.40
388 70 12.10
341 67 12.90
247 58 12.90
123 38 11.60
3 3 9.40
0 0 8.80
0 0 8.20
0 0 7.70
0 0 7.10
0 0 6.50
0 0 5.80
0 0 5.30
0 0 4.70
0 0 4.10
0 0 3.50
0 0 3.20
0 0 2.90
0 0 2.80
0 0 2.60
0 0 2.60
74 46 4.30
156 69 6.30
233 92 8.20
304 90 10.10
292 102 11.30
233 103 11.70
170 76 11.50
86 41 10.60
3 3 9.10
0 0 8.40
0 0 7.70
0 0 6.90
0 0 6.20
0 0 5.50
0 0 4.80
0 0 4.10
0 0 3.40
0 0 2.70
0 0 1.90
0 0 1.50
0 0 1.10
0 0 0.80
0 0 0.50
1 1 0.40
79 52 2.20
149 78 3.80
196 141 5.10
256 123 6.60
275 113 7.60
261 83 8.30
193 59 8.30
101 53 7.50
3 3 6.00
0 0 5.80
0 0 5.60
0 0 5.40
0 0 5.20
0 0 4.90
0 0 4.70
0 0 4.50
0 0 4.60
0 0 4.80
0 0 5.00
0 0 5.10
0 0 5.30
0 0 5.40
0 0 5.50
0 0 5.60
59 37 7.50
145 71 9.90
228 89 12.40
267 113 14.40
275 111 15.80
246 101 16.50
173 77 16.60
80 47 15.70
2 2 14.10
0 0 13.60
0 0 13.00
0 0 12.50
0 0 11.90
0 0 11.40
0 0 10.90
0 0 10.30
0 0 9.40
0 0 8.40
0 0 7.50
0 0 7.00
0 0 6.50
0 0 6.10
0 0 5.80
0 0 5.70
58 33 7.00
160 55 9.00
263 62 11.10
312 61 12.80
293 82 13.80
256 79 14.20
161 72 13.90
69 43 12.80
1 1 11.40
0 0 10.80
0 0 10.20
0 0 9.50
0 0 8.90
0 0 8.20
0 0 7.60
0 0 7.00
0 0 6.50
0 0 6.00
0 0 5.60
0 0 5.30
0 0 5.10
0 0 4.90
0 0 4.80
0 0 4.80
22 22 5.20
65 65 5.80
108 107 6.60
134 132 7.30
133 130 7.70
79 79 7.70
43 43 7.40
22 22 7.00
1 1 6.50
0 0 6.20
0 0 5.90
0 0 5.70
0 0 5.30
0 0 5.20
0 0 4.90
0 0 4.70
0 0 4.50
0 0 4.40
0 0 4.20
0 0 4.10
0 0 4.10
0 0 4.00
0 0 4.00
0 0 4.00
32 32 4.80
88 81 6.10
153 128 7.60
187 158 8.90
189 157 9.80
164 135 10.20
102 93 10.10
41 41 9.40
1 1 8.40
0 0 8.20
0 0 8.00
0 0 7.80
0 0 7.60
0 0 7.40
0 0 7.30
0 0 7.10
0 0 6.80
0 0 6.60
0 0 6.40
0 0 6.30
0 0 6.10
0 0 6.10
0 0 6.00
0 0 6.10
15 15 6.60
56 56 7.40
157 118 9.20
151 139 10.20
86 86 10.30
164 124 11.00
127 92 11.20
31 31 10.70
1 1 9.90
0 0 9.40
0 0 8.90
0 0 8.30
0 0 7.80
0 0 7.20
0 0 6.70
0 0 6.10
0 0 5.30
0 0 4.50
0 0 3.60
0 0 3.20
0 0 2.70
0 0 2.40
0 0 2.10
0 0 2.00
6 6 2.00
26 26 2.20
32 32 2.30
33 33 2.30
33 33 2.30
252 120 3.40
175 52 3.80
81 38 3.80
1 1 3.30
0 0 3.10
0 0 3.00
0 0 2.80
0 0 2.60
0 0 2.50
0 0 2.30
0 0 2.10
0 0 2.30
0 0 2.60
0 0 2.80
0 0 3.00
0 0 3.20
0 0 3.30
0 0 3.40
0 0 3.50
14 14 4.00
19 19 4.40
47 47 5.00
33 33 5.30
30 30 5.40
259 119 7.80
196 45 9.10
96 29 9.30
1 1 8.50
0 0 8.30
0 0 8.10
0 0 7.80
0 0 7.60
0 0 7.40
0 0 7.10
0 0 6.90
0 0 6.30
0 0 5.70
0 0 5.10
0 0 4.70
0 0 4.40
0 0 4.20
0 0 3.90
0 0 3.90
11 11 3.90
30 30 4.00
45 45 4.10
50 50 4.10
56 56 4.20
48 48 4.10
34 34 4.10
16 16 4.00
0 0 3.80
0 0 3.60
0 0 3.30
0 0 3.10
0 0 2.90
0 0 2.60
0 0 2.00
0 0 2.00
0 0 2.10
0 0 2.10
0 0 2.20
0 0 2.20
0 0 2.20
0 0 2.20
0 0 2.20
0 0 2.30
14 14 2.70
35 35 3.20
53 53 3.70
66 66 4.20
72 72 4.50
59 59 4.70
35 35 4.70
18 18 4.40
1 1 4.10
0 0 3.90
0 0 3.70
0 0 3.50
0 0 3.00
0 0 3.00
0 0 2.90
0 0 2.60
0 0 2.00
0 0 1.60
0 0 1.00
0 0 0.70
0 0 0.40
0 0 0.20
0 0 0.00
0 0 -0.10
14 14 0.10
57 57 0.70
89 89 1.30
74 74 1.50
93 93 1.70
118 112 2.00
67 67 2.00
30 30 1.70
0 0 1.30
0 0 0.90
0 0 0.50
0 0 0.10
0 0 -0.30
0 0 -0.70
0 0 -1.10
0 0 -1.50
0 0 -1.80
0 0 -2.10
0 0 -2.40
0 0 -2.50
0 0 -2.70
0 0 -2.80
0 0 -2.90
0 0 -2.90
8 8 -2.70
44 44 -2.10
62 62 -1.50
175 130 -0.10
134 127 0.50
93 93 0.70
124 79 1.00
72 49 0.90
2 2 0.20
0 0 0.00
0 0 -0.20
0 0 -0.40
0 0 -0.60
0 0 -0.80
0 0 -1.00
0 0 -1.20
0 0 -1.30
0 0 -1.50
0 0 -1.60
0 0 -1.70
0 0 -1.80
0 0 -1.90
0 0 -2.00
0 0 -2.00
16 16 -1.40
69 67 -0.30
81 81 0.30
97 97 0.70
125 122 1.20
106 105 1.40
65 65 1.10
41 37 0.80
0 0 0.10
0 0 0.20
0 0 0.40
0 0 0.50
0 0 0.60
0 0 0.70
0 0 0.90
0 0 1.00
0 0 0.90
0 0 1.20
0 0 1.40
0 0 1.50
0 0 1.60
0 0 1.70
0 0 1.80
0 0 1.80
9 9 2.50
58 58 4.20
77 77 5.20
82 82 5.80
111 111 6.70
78 78 6.90
73 73 7.00
25 25 6.40
0 0 5.60
0 0 5.20
0 0 4.90
0 0 4.50
0 0 4.10
0 0 3.80
0 0 3.40
0 0 3.10
0 0 2.00
0 0 0.70
0 0 -0.60
0 0 -1.30
0 0 -2.10
0 0 -2.80
0 0 -3.30
0 0 -3.90
18 18 -3.30
113 66 -1.40
255 87 1.20
278 87 2.60
246 96 3.10
232 90 3.30
137 70 2.60
66 41 1.30
0 0 -0.30
0 0 -0.10
0 0 0.10
0 0 0.20
0 0 0.40
0 0 0.60
0 0 0.80
0 0 0.90
0 0 1.40
0 0 2.10
0 0 2.70
0 0 3.00
0 0 3.40
0 0 3.80
0 0 4.00
0 0 4.30
4 4 4.90
19 19 5.90
29 29 6.70
37 37 7.40
38 38 7.90
34 34 8.20
23 23 8.20
11 11 7.90
0 0 7.50
0 0 7.50
0 0 7.00
0 0 7.30
0 0 7.50
0 0 7.40
0 0 7.50
0 0 7.60
0 0 7.00
0 0 6.30
0 0 5.70
0 0 5.40
0 0 5.10
0 0 4.80
0 0 4.60
0 0 4.30
3 3 4.40
12 12 4.60
31 31 4.90
43 43 5.20
57 57 5.50
210 101 7.00
150 57 7.60
70 41 7.50
1 1 6.80
0 0 6.30
0 0 5.80
0 0 5.30
0 0 4.80
0 0 4.30
0 0 3.90
0 0 3.40
0 0 3.00
0 0 2.60
0 0 2.30
0 0 2.10
0 0 1.90
0 0 1.70
0 0 1.50
0 0 1.40
3 3 1.50
14 14 1.80
22 22 2.00
26 26 2.20
26 26 2.10
206 121 3.80
139 58 4.40
59 33 4.40
0 0 3.80
0 0 3.50
0 0 3.20
0 0 3.00
0 0 2.70
0 0 2.40
0 0 2.10
0 0 1.90
0 0 1.60
0 0 1.40
0 0 1.20
0 0 1.00
0 0 0.90
0 0 0.80
0 0 0.70
0 0 0.60
3 3 0.80
37 37 1.60
66 66 2.40
77 77 2.90
93 93 3.30
66 66 3.40
55 55 3.40
18 18 2.90
0 0 2.40
0 0 2.30
0 0 2.00
0 0 2.00
0 0 1.90
0 0 1.80
0 0 1.70
0 0 1.60
0 0 1.50
0 0 1.50
0 0 1.40
0 0 1.40
0 0 1.40
0 0 1.40
0 0 1.40
0 0 1.40
3 3 1.60
26 26 2.30
42 42 2.80
49 49 3.20
51 51 3.50
46 46 3.60
32 32 3.40
12 12 2.90
0 0 3.00
0 0 2.80
0 0 2.60
0 0 2.40
0 0 2.20
0 0 2.00
0 0 1.80
0 0 1.60
0 0 1.30
0 0 1.10
0 0 0.90
0 0 0.80
0 0 0.70
0 0 0.70
0 0 0.60
0 0 0.60
4 4 0.80
113 47 3.30
180 76 5.10
257 88 7.00
218 120 7.80
100 97 7.20
15 15 5.70
6 6 4.70
0 0 3.80
0 0 3.70
0 0 3.60
0 0 3.50
0 0 3.40
0 0 3.30
0 0 3.20
0 0 3.10
0 0 2.60
0 0 2.40
0 0 1.90
0 0 1.10
0 0 1.30
0 0 1.20
0 0 1.20
0 0 1.00
3 3 1.00
15 15 1.10
24 24 1.10
30 30 1.20
30 30 1.10
28 28 1.10
20 20 0.90
8 8 0.90
0 0 0.80
0 0 0.70
0 0 0.60
0 0 0.50
0 0 0.40
0 0 0.30
0 0 0.20
0 0 0.10
0 0 0.20
0 0 0.30
0 0 -0.60
0 0 0.30
0 0 0.50
0 0 0.60
0 0 0.40
0 0 0.50
2 2 0.50
13 13 1.30
24 24 1.70
31 31 2.20
30 30 2.40
27 27 2.50
18 18 2.50
7 7 2.30
0 0 2.10
0 0 2.00
0 0 1.90
0 0 1.80
0 0 1.70
0 0 1.60
0 0 1.60
0 0 1.40
0 0 1.10
0 0 0.60
0 0 0.00
0 0 -0.30
0 0 -0.60
0 0 -0.90
0 0 -1.20
0 0 -1.40
2 2 -1.50
13 13 -1.50
26 26 -1.60
33 33 -1.60
36 36 -1.70
31 31 -1.80
20 20 -1.90
9 9 -2.10
0 0 -2.20
0 0 -2.20
0 0 -1.90
0 0 -1.60
0 0 -1.40
0 0 -1.70
0 0 -1.00
0 0 -0.80
0 0 -0.50
0 0 -0.20
0 0 0.10
0 0 0.40
0 0 0.40
0 0 0.90
0 0 1.10
0 0 1.30
3 3 1.50
28 28 2.60
52 52 3.70
68 68 4.50
69 69 5.10
58 58 5.40
40 40 5.30
13 13 4.90
0 0 4.30
0 0 4.20
0 0 4.10
0 0 3.90
0 0 3.80
0 0 3.70
0 0 3.50
0 0 3.40
0 0 2.70
0 0 2.00
0 0 1.30
0 0 0.80
0 0 0.40
0 0 0.00
0 0 -0.30
0 0 -0.60
2 2 -0.60
31 31 -0.20
41 41 0.00
34 34 0.00
54 54 0.10
191 100 1.00
117 70 1.20
36 32 0.90
0 0 0.40
0 0 0.30
0 0 0.10
0 0 0.00
0 0 -0.10
0 0 -0.20
0 0 -0.40
0 0 -0.50
0 0 -0.30
0 0 0.10
0 0 0.40
0 0 0.70
0 0 0.90
0 0 1.10
0 0 1.30
0 0 1.50
16 16 2.60
128 77 6.00
125 92 7.20
121 109 7.80
264 121 10.00
83 83 9.30
84 73 8.90
6 6 7.50
0 0 6.50
0 0 6.40
0 0 6.30
0 0 6.20
0 0 6.10
0 0 6.00
0 0 5.90
0 0 5.80
0 0 5.30
0 0 4.70
0 0 4.10
0 0 3.70
0 0 3.40
0 0 3.00
0 0 2.80
0 0 2.60
2 2 2.60
48 48 3.70
99 94 4.90
136 116 5.90
204 105 7.30
169 98 7.90
145 71 8.10
68 39 7.50
1 1 6.30
0 0 6.10
0 0 6.00
0 0 5.80
0 0 5.60
0 0 5.50
0 0 5.30
0 0 5.20
0 0 5.20
0 0 5.40
0 0 5.60
0 0 5.80
0 0 6.00
0 0 6.10
0 0 6.30
0 0 6.50
2 2 6.70
80 58 9.00
90 87 10.00
128 113 11.10
210 115 11.20
124 104 11.20
58 58 11.20
28 28 11.80
1 1 11.10
0 0 10.80
0 0 10.50
0 0 10.10
0 0 9.80
0 0 9.50
0 0 9.20
0 0 8.90
0 0 8.10
0 0 7.10
0 0 6.10
0 0 5.50
0 0 5.00
0 0 4.50
0 0 4.10
0 0 3.70
3 3 3.70
34 34 4.00
58 58 4.30
83 83 4.50
109 108 4.80
105 102 4.90
81 73 4.90
39 33 4.60
0 0 4.10
0 0 3.90
0 0 3.80
0 0 3.70
0 0 3.50
0 0 3.40
0 0 3.30
0 0 3.10
0 0 3.50
0 0 3.90
0 0 4.30
0 0 4.60
0 0 4.90
0 0 5.20
0 0 5.40
0 0 5.60
2 2 5.70
24 24 6.90
75 75 8.60
107 105 10.20
97 97 11.00
79 79 11.40
54 54 11.30
20 20 10.70
0 0 9.90
0 0 9.80
0 0 9.80
0 0 9.70
0 0 9.60
0 0 9.50
0 0 9.50
0 0 9.40
0 0 8.90
0 0 8.40
0 0 7.90
0 0 7.60
0 0 7.30
0 0 7.10
0 0 6.60
0 0 6.70
2 2 6.70
23 23 7.00
45 45 7.30
58 58 7.50
62 62 7.60
55 55 7.70
33 33 7.60
12 12 7.30
0 0 7.10
0 0 6.80
0 0 6.50
0 0 6.10
0 0 5.90
0 0 5.50
0 0 5.30
0 0 5.00
0 0 4.90
0 0 4.80
0 0 4.80
0 0 4.80
0 0 4.80
0 0 4.80
0 0 4.80
0 0 4.80
4 4 5.10
40 40 6.10
105 90 7.70
122 116 8.80
126 117 9.50
65 65 9.30
54 54 9.00
19 19 8.40
0 0 7.80
0 0 7.40
0 0 7.10
0 0 6.70
0 0 6.30
0 0 5.90
0 0 5.60
0 0 5.30
0 0 4.00
0 0 2.70
0 0 1.30
0 0 0.50
0 0 -0.30
0 0 -1.10
0 0 -1.70
0 0 -2.30
10 10 -2.20
59 53 -1.80
116 96 -1.40
126 114 -1.20
131 124 -1.10
111 106 -1.20
96 74 -1.40
6 6 -2.00
0 0 -2.60
0 0 -2.80
0 0 -3.00
0 0 -3.30
0 0 -3.50
0 0 -3.70
0 0 -3.90
0 0 -4.20
0 0 -3.70
0 0 -3.00
0 0 -2.40
0 0 -1.90
0 0 -1.50
0 0 -1.10
0 0 -0.80
0 0 -0.40
2 2 -0.10
78 55 2.90
81 80 4.10
162 110 6.30
254 87 9.20
219 56 10.80
178 46 11.50
76 27 10.60
1 1 8.90
0 0 8.40
0 0 8.00
0 0 7.60
0 0 7.10
0 0 6.70
0 0 6.30
0 0 5.80
0 0 4.70
0 0 3.50
0 0 2.30
0 0 1.60
0 0 1.00
0 0 0.30
0 0 -0.20
0 0 -0.60
2 2 -0.70
10 10 -0.70
19 19 -0.70
25 25 -0.70
50 50 -0.60
232 111 0.30
195 63 0.70
84 33 0.60
1 1 0.10
0 0 -0.60
0 0 -1.40
0 0 -2.20
0 0 -2.90
0 0 -3.70
0 0 -4.50
0 0 -5.30
0 0 -5.60
0 0 -6.00
0 0 -6.40
0 0 -6.50
0 0 -6.70
0 0 -6.90
0 0 -7.00
0 0 -7.10
2 2 -7.00
82 45 -4.80
187 52 -2.10
248 46 0.10
262 83 1.60
183 103 1.80
155 70 1.80
57 33 0.60
0 0 -1.00
0 0 -1.40
0 0 -1.70
0 0 -2.10
0 0 -2.50
0 0 -2.90
0 0 -3.30
0 0 -3.70
0 0 -4.10
0 0 -4.60
0 0 -5.10
0 0 -5.40
0 0 -5.60
0 0 -5.90
0 0 -6.10
0 0 -6.30
2 2 -6.40
16 16 -6.30
30 30 -6.20
41 41 -6.20
42 42 -6.10
38 38 -6.20
24 24 -6.20
11 11 -6.40
0 0 -6.50
0 0 -6.70
0 0 -6.80
0 0 -7.10
0 0 -7.20
0 0 -7.70
0 0 -7.60
0 0 -7.70
0 0 -7.60
0 0 -7.50
0 0 -7.40
0 0 -7.30
0 0 -7.20
0 0 -7.10
0 0 -7.00
0 0 -6.90
1 1 -6.70
18 18 -6.10
17 17 -5.80
26 26 -5.50
40 40 -5.10
183 104 -3.20
134 59 -2.20
54 36 -2.20
0 0 -2.90
0 0 -3.20
0 0 -3.50
0 0 -3.70
0 0 -4.00
0 0 -4.30
0 0 -4.50
0 0 -4.80
0 0 -5.30
0 0 -5.90
0 0 -6.50
0 0 -6.80
0 0 -7.10
0 0 -7.40
0 0 -7.60
0 0 -7.90
4 4 -7.70
92 39 -5.40
170 55 -3.30
228 61 -1.50
246 59 -0.20
217 58 0.30
149 50 0.10
66 34 -0.90
0 0 -2.40
0 0 -2.60
0 0 -2.90
0 0 -3.10
0 0 -3.30
0 0 -3.50
0 0 -3.70
0 0 -3.90
0 0 -4.00
0 0 -4.00
0 0 -4.10
0 0 -4.10
0 0 -4.10
0 0 -4.10
0 0 -4.10
0 0 -4.10
2 2 -4.00
46 46 -2.70
94 90 -1.40
95 95 -0.80
90 90 -0.40
82 82 -0.20
35 35 -0.70
18 18 -1.20
0 0 -1.80
0 0 -1.80
0 0 -1.80
0 0 -1.80
0 0 -1.90
0 0 -1.90
0 0 -2.00
0 0 -1.90
0 0 -2.00
0 0 -2.10
0 0 -2.20
0 0 -2.20
0 0 -2.20
0 0 -2.20
0 0 -2.20
0 0 -2.20
3 3 -2.00
67 54 -0.10
121 95 1.60
158 129 3.10
163 136 4.00
145 121 4.40
99 83 4.30
46 40 3.60
0 0 2.50
0 0 2.30
0 0 2.10
0 0 2.00
0 0 1.80
0 0 1.60
0 0 1.50
0 0 1.30
0 0 1.00
0 0 0.80
0 0 0.60
0 0 0.50
0 0 0.50
0 0 0.40
0 0 0.40
0 0 0.30
4 4 0.60
87 41 3.00
163 60 5.30
196 87 7.00
219 83 8.40
171 94 8.80
128 67 8.70
56 37 7.70
1 1 6.30
0 0 5.50
0 0 4.80
0 0 4.10
0 0 3.40
0 0 2.60
0 0 1.90
0 0 1.20
0 0 0.20
0 0 -0.80
0 0 -1.90
0 0 -2.50
0 0 -3.10
0 0 -3.70
0 0 -4.10
0 0 -4.50
4 4 -4.50
102 36 -2.20
193 42 -0.10
253 45 1.60
274 45 2.70
247 44 3.30
172 40 3.10
77 32 1.90
1 1 0.30
0 0 0.10
0 0 -0.10
0 0 -0.40
0 0 -0.60
0 0 -0.90
0 0 -1.10
0 0 -1.40
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_422" class="java.beans.XMLDecoder">
<object class="eu.simstadt.workflowsteps.WeatherProcessorStep" id="WeatherProcessorStep0">
<void class="de.hftstuttgart.hierarchicworkflow.WorkflowStep" method="getField">
<string>selectedNextStepPath</string>
<void method="set">
<object idref="WeatherProcessorStep0"/>
<string>03_IrradianceProcessor.step</string>
</void>
</void>
<void property="inputFilename">
<string>Wuerzburg-hour.csv</string>
</void>
<void property="name">
<string>Base</string>
</void>
<void property="weatherDataSource">
<object class="java.lang.Enum" method="valueOf">
<class>de.hft.stuttgart.simstadt2.weather.WeatherDataSourceType</class>
<string>TMY3_HOURLY_FILE</string>
</object>
</void>
</object>
</java>
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_422" class="java.beans.XMLDecoder">
<object class="eu.simstadt.workflowsteps.IrradianceProcessorStep" id="IrradianceProcessorStep0">
<void class="de.hftstuttgart.hierarchicworkflow.WorkflowStep" method="getField">
<string>selectedNextStepPath</string>
<void method="set">
<object idref="IrradianceProcessorStep0"/>
<string>04_MonthlyEnergyBalance.step</string>
</void>
</void>
<void property="name">
<string>Base</string>
</void>
</object>
</java>
## SimStadt DIN18599 Monthly Energy Balance
#
# Weather data source;meteonorm tmy3 file 2000-2009
# Location;Wuerzburg
# Coordinate reference system;EPSG:25832
# Latitude;49,77;°
# Longitude;9,97;°
# Radiation model;meteonorm_Hay
# Calculation Mode;HEATING
# Consumer behaviour;IWU_NUTZUNG
#
# Building physics library;German Building Typology Library IWU (http://www.iwu.de)
# Building usage library;Germany (based on UsageLibrary.xlsx, sheet: Germany)
# Has custom building usage codes?;false
#
# SimStadt version;0.14.0-SNAPSHOT (develop, rev. a5cbb2b, 20250317)
# Created at;2025/04/23 09:41:31
# Cache version;7
#
GMLId;ParentGMLId;Latitude;Longitude;X-coordinate;Y-coordinate;LOD;Year of construction;Year of refurbishment;Refurbishment Variant;ALKIS code;PrimaryUsageZoneType;PrimaryUsageZoneArea;SecondaryUsageZoneType;SecondaryUsageZoneArea;BuildingType;Footprint area;Total wall thermal area above ground;Total wall thermal area below ground;Total outwall area;Total shared wall area;Total roof area;Gross volume;Is Gross volume approximated?;Heated volume;Ridge/mean Height;Eaves/mean Height;Storey number;Average Storey Height;Number of households;Number of occupants;Attic Heating;Basement Heating;Basement ceiling height above ground;Surface area to volume ratio;Heated area;Mean Uvalue;Specific domestic hot water demand;Domestic hot water demand;Specific space heating demand;Yearly Heating demand;Total Yearly Heating + DHW demand;January Heating demand;February Heating demand;March Heating demand;April Heating demand;May Heating demand;June Heating demand;July Heating demand;August Heating demand;September Heating demand;October Heating demand;November Heating demand;December Heating demand
[-];[-];[°];[°];[?];[?];LOD;[YYYY];[YYYY];[-];[-];[-];[m²];[-];[m²];[-];[m²];[m²];[m²];[m²];[m²];[m²];[m³];[0/1];[m³];[m];[m];[-];[m];[-];[-];[-];[-];[m];[m⁻¹];[m²];[W/(m²·K)];[kWh/(m²·a)];[kWh/a];[kWh/(m²·a)];[kWh/a];[kWh/a];[kWh];[kWh];[kWh];[kWh];[kWh];[kWh];[kWh];[kWh];[kWh];[kWh];[kWh];[kWh]
DEBY_LOD2_604868;;49,80340;9,94771;568195,65;5517202,94;LOD_2;1973;;Original;31001_1000;residential;658,3;none;0,0;GMH;139,5;385,7;0,0;414,3;308,0;156,8;2196,6;false;2057,1;17,0;14,47;6;2,7;6;19;HEATED;NOT_HEATED;1,0;0,324;658,3;1,20;15,8;10427,0;74,5;49073;59500;10945;8297;5868;2017;175;3;0;0;385;3222;7460;10702
DEBY_LOD2_604870;;49,80340;9,94729;568165,37;5517202,14;LOD_2;1960;;Original;31001_1000;residential;912,4;none;0,0;GMH;184,1;573,4;0,0;616,8;192,3;250,3;3035,3;false;2851,2;19,2;14,17;7;2,6;9;18;HEATED;NOT_HEATED;1,0;0,346;912,4;1,28;15,8;14452,0;86,3;78709;93161;17271;13206;9629;3531;336;5;0;0;750;5375;11798;16808
DEBY_LOD2_604869;;49,80340;9,94676;568127,19;5517202,25;LOD_2;2014;;Original;31001_1000;residential;864,4;none;0,0;GMH;179,3;566,3;0,0;609,2;180,9;225,8;2880,6;false;2701,3;18,6;14,11;7;2,5;8;18;HEATED;NOT_HEATED;1,0;0,352;864,4;0,40;15,8;13692,0;32,2;27835;41527;6804;4944;3024;545;11;0;0;0;44;1384;4416;6662
DEBY_LOD2_604871;;49,80340;9,94697;568142,65;5517202,19;LOD_2;1978;;Original;31001_1000;residential;825,2;none;0,0;GMH;179,8;529,0;0,0;571,6;180,9;225,9;2758,5;false;2578,8;17,7;13,43;6;2,8;8;12;HEATED;NOT_HEATED;1,0;0,354;825,2;1,20;15,8;13071,0;78,4;64691;77762;14652;10977;7606;2331;186;2;0;0;447;4177;9981;14333
DEBY_LOD2_604872;;49,80319;9,94676;568127,23;5517178,83;LOD_2;1974;;Original;31001_1000;residential;782,4;none;0,0;GMH;179,5;506,9;0,0;549,7;168,6;220,2;2624,4;false;2445,0;16,9;12,82;6;2,7;7;10;HEATED;NOT_HEATED;1,0;0,362;782,4;1,19;15,8;12393,0;82,3;64359;76752;14356;10877;7723;2621;222;3;0;0;520;4268;9767;14002
DEBY_LOD2_604874;;49,80318;9,94749;568180,49;5517178,18;LOD_2;1990;;Original;31001_1000;residential;720,6;none;0,0;GMH;164,4;417,0;0,0;451,5;249,7;205,3;2416,4;false;2252,0;16,8;12,61;6;2,6;7;13;HEATED;NOT_HEATED;1,0;0,340;720,6;0,81;15,8;11415,0;56,5;40720;52135;9243;6955;4826;1460;94;1;0;0;247;2583;6269;9043
DEBY_LOD2_604873;;49,80319;9,94697;568142,69;5517178,70;LOD_2;1960;;Original;31001_1000;residential;763,1;none;0,0;GMH;178,0;491,8;0,0;534,1;168,6;219,1;2562,7;false;2384,7;16,6;12,59;6;2,6;7;11;HEATED;NOT_HEATED;1,0;0,363;763,1;1,27;15,8;12088,0;87,7;66901;78989;14860;11269;8075;2719;248;3;0;0;568;4502;10166;14490
DEBY_LOD2_604876;;49,80318;9,94728;568165,25;5517178,28;LOD_2;1922;;Original;31001_1000;residential;785,3;none;0,0;GMH;172,0;524,6;0,0;530,5;161,3;216,0;2478,0;false;2453,9;16,6;12,57;6;2,8;7;15;HEATED;NOT_HEATED;0,1;0,371;785,3;1,57;15,8;12439,0;104,5;82097;94536;18223;13935;10124;3420;185;1;0;0;556;5545;12398;17712
DEBY_LOD2_604875;;49,80339;9,94751;568181,00;5517202,13;LOD_2;1916;;Original;31001_1000;residential;896,3;none;0,0;GMH;171,9;450,0;0,0;481,7;362,2;225,8;2972,7;false;2800,8;19,7;14,70;7;2,7;8;12;HEATED;NOT_HEATED;1,0;0,296;896,3;1,80;15,8;14197,0;96,2;86184;100381;19335;14656;10459;3426;175;1;0;0;520;5627;13139;18847
DEBY_LOD2_604877;;49,80340;9,94791;568209,80;5517202,83;LOD_2;1988;;Original;31001_1000;residential;722,0;none;0,0;GMH;138,1;416,7;0,0;445,6;324,2;180,3;2394,5;false;2256,4;19,4;15,27;7;2,6;7;9;HEATED;NOT_HEATED;1,0;0,319;722,0;0,82;15,8;11437,0;53,8;38842;50279;8840;6638;4580;1424;91;1;0;0;226;2409;5975;8659
DEBY_LOD2_604878;;49,80339;9,94810;568223,83;5517202,73;LOD_2;1956;;Original;31001_1000;residential;894,8;none;0,0;GMH;138,6;593,0;0,0;597,4;170,0;180,7;2392,0;false;2375,7;19,3;15,18;8;2,4;8;15;HEATED;NOT_HEATED;0,1;0,383;894,8;1,39;15,8;14174,0;82,7;73961;88135;16514;12477;8864;2948;261;4;0;0;595;4902;11277;16121
DEBY_LOD2_604879;;49,80317;9,94790;568209,32;5517177,33;LOD_2;1968;;Original;31001_1000;residential;616,0;none;0,0;GMH;137,5;411,6;0,0;443,2;235,4;154,8;2062,6;false;1925,1;16,3;13,73;6;2,5;6;8;HEATED;NOT_HEATED;1,0;0,357;616,0;1,28;15,8;9758,0;89,8;55308;65066;12044;9253;6806;2577;269;4;0;0;560;3822;8253;11720
DEBY_LOD2_604880;;49,80316;9,94809;568223,38;5517177,20;LOD_2;1937;;Original;31001_1000;residential;557,8;none;0,0;GMH;138,8;494,9;0,0;532,1;147,3;156,7;2075,2;false;1936,4;16,2;13,66;5;3,0;5;10;HEATED;NOT_HEATED;1,0;0,399;557,8;1,57;15,8;8836,0;117,9;65781;74617;14962;11282;7868;2321;111;0;0;0;330;4224;10112;14572
DEBY_LOD2_604882;;49,80317;9,94770;568195,11;5517177,45;LOD_2;1882;;Original;31001_1000;residential;363,9;none;0,0;RH;142,2;231,7;0,0;260,7;176,6;142,2;1279,5;false;1137,3;9,0;9,00;3;2,7;5;8;NO_ROOM;NOT_HEATED;1,0;0,426;363,9;1,31;15,8;5765,0;107,5;39128;44893;8497;6561;4898;1915;150;1;0;0;332;2694;5822;8259
DEBY_LOD2_605659;;49,80331;9,94669;568122,33;5517191,87;LOD_2;1966;;Original;31001_2000;commercial;12,5;none;0,0;EFH;15,6;45,3;0,0;49,5;0,0;15,7;45,7;false;39,0;3,1;2,75;1;2,5;0;0;NOT_HEATED;NOT_HEATED;0,3;1,769;12,5;1,23;73,0;912,0;258,7;3231;4143;799;574;360;88;0;0;0;0;2;145;488;775
DEBY_LOD2_605660;;49,80331;9,94722;568160,33;5517192,29;LOD_2;1976;;Original;31001_2000;commercial;14,4;none;0,0;RH;17,4;30,7;0,0;33,6;15,9;17,4;49,3;false;45,1;2,8;2,84;1;2,6;0;0;NO_ROOM;NOT_HEATED;0,2;1,384;14,4;1,15;73,0;1054,0;225,0;3247;4301;765;565;379;108;4;0;0;0;12;188;491;736
DEBY_LOD2_605661;;49,80330;9,94700;568144,89;5517191,77;LOD_2;1991;;Original;31001_2000;commercial;23,9;none;0,0;EFH;29,9;71,7;0,0;79,6;0,0;30,0;87,3;false;74,7;3,0;2,79;1;2,5;0;0;NOT_HEATED;NOT_HEATED;0,3;1,599;23,9;0,59;73,0;1745,0;140,1;3349;5094;807;574;356;97;7;0;0;0;15;180;521;793
DEBY_LOD2_605664;;49,80327;9,94722;568160,29;5517188,10;LOD_2;1953;;Original;31001_2000;commercial;26,5;none;0,0;RH;29,3;43,1;0,0;48,3;15,9;29,4;86,7;false;70,2;3,2;2,72;1;2,4;0;0;NOT_HEATED;NOT_HEATED;0,3;1,233;26,5;1,21;73,0;1932,0;185,1;4898;6830;1190;847;527;138;6;0;0;0;15;253;759;1164
DEBY_LOD2_605665;;49,80327;9,94805;568220,45;5517189,01;LOD_2;1918;;Original;31001_2000;commercial;15,1;none;0,0;RH;18,2;31,4;0,0;41,5;19,4;18,2;62,4;false;47,3;3,4;3,43;1;2,6;0;0;NO_ROOM;NOT_HEATED;0,8;1,249;15,1;1,33;73,0;1105,0;246,9;3735;4840;878;657;449;133;2;0;0;0;8;204;558;846
DEBY_LOD2_605663;;49,80332;9,94747;568178,23;5517193,67;LOD_2;1984;;Original;31001_2000;commercial;27,7;none;0,0;RH;34,6;40,9;0,0;56,5;24,8;34,6;119,4;false;86,5;3,5;3,45;1;2,5;0;0;NO_ROOM;NOT_HEATED;1,0;1,052;27,7;0,66;73,0;2021,0;134,0;3709;5730;859;631;420;126;12;0;0;0;25;226;571;838
DEBY_LOD2_605662;;49,80327;9,94744;568176,42;5517187,76;LOD_2;2002;;Original;31001_2000;commercial;31,1;none;0,0;EFH;38,9;53,7;0,0;54,0;8,8;38,9;97,8;false;97,3;2,5;2,51;1;2,5;0;0;NO_ROOM;NOT_HEATED;0,0;1,347;31,1;0,39;73,0;2273,0;94,2;2934;5207;672;497;335;105;12;0;0;0;23;181;451;658
DEBY_LOD2_605668;;49,80326;9,94815;568227,84;5517187,71;LOD_2;2007;;Original;31001_2000;commercial;14,2;none;0,0;RH;17,8;24,0;0,0;32,1;26,4;17,8;59,6;false;44,5;3,4;3,35;1;2,5;0;0;NO_ROOM;NOT_HEATED;0,9;1,135;14,2;0,41;73,0;1040,0;87,9;1251;2291;297;212;132;38;5;0;0;0;7;67;198;296
DEBY_LOD2_605669;;49,80327;9,94810;568223,57;5517188,98;LOD_2;1935;;Original;31001_2000;commercial;14,9;none;0,0;RH;16,9;18,1;0,0;22,9;37,2;16,9;58,9;false;46,5;3,5;3,49;1;2,8;0;0;NO_ROOM;NOT_HEATED;0,7;0,962;14,9;1,26;73,0;1086,0;203,1;3022;4108;684;520;372;131;7;0;0;0;15;183;449;662
DEBY_LOD2_605670;;49,80329;9,94816;568227,85;5517190,95;LOD_2;1965;;Original;31001_2000;commercial;14,4;none;0,0;RH;18,0;24,1;0,0;28,4;22,6;18,0;52,9;false;44,9;2,9;2,94;1;2,5;0;0;NO_ROOM;NOT_HEATED;0,4;1,216;14,4;1,29;73,0;1049,0;244,5;3514;4563;808;609;430;134;5;0;0;0;15;216;523;774
======================== Summary ========================
================ Excluded buildings lists ===============
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_422" class="java.beans.XMLDecoder">
<object class="eu.simstadt.workflowsteps.MonthlyEnergyBalanceStep">
<void property="name">
<string>Base</string>
</void>
</object>
</java>
<java version="1.8.0_422" class="java.beans.XMLDecoder">
<object class="eu.simstadt.workflows.CityGmlWorkflow" id="CityGmlWorkflow0">
<void class="de.hftstuttgart.hierarchicworkflow.Workflow" method="getField">
<string>selectedStartStepPath</string>
<void method="set">
<object idref="CityGmlWorkflow0" />
<string>00_ImportCityGml.step</string>
</void>
</void>
<void class="de.hftstuttgart.hierarchicworkflow.WorkflowStep" method="getField">
<string>startStep</string>
<void method="set">
<object idref="CityGmlWorkflow0" />
<boolean>true</boolean>
</void>
</void>
<void property="name">
<string>CGSC_HeatDemand</string>
</void>
<void property="shortName">
<string>HeatDemand</string>
</void>
<void property="workflowProvider">
<object class="de.hftstuttgart.simstadtworkflows.energy.HeatDemandAnalysisWorkflowProvider" />
</void>
<void property="cityGmlFileNames"><void method="add"><string>Grombuehl_mini_Steinheilstrasse.gml</string></void></void></object>
</java>
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment