From caaed61e02676365949450e922ca580dcbc8a6f4 Mon Sep 17 00:00:00 2001 From: jmbenlloch Date: Thu, 29 Apr 2021 18:48:49 +0200 Subject: [PATCH 01/12] Create LOR table with the name and format expected by petalo_rust --- abracadabra/src/io/hdf5.cc | 74 +++++++++++++++++++++++++++++++++++++- abracadabra/src/io/hdf5.hh | 29 ++++++++++++++- 2 files changed, 101 insertions(+), 2 deletions(-) diff --git a/abracadabra/src/io/hdf5.cc b/abracadabra/src/io/hdf5.cc index de38d08..6e92e7a 100644 --- a/abracadabra/src/io/hdf5.cc +++ b/abracadabra/src/io/hdf5.cc @@ -9,7 +9,8 @@ namespace HF { using namespace HighFive; } hdf5_io::hdf5_io(std::string fname) : filename{fname} , runinfo_index{0} -, hit_index{0} {} +, hit_index{0} +, lor_index{0} {} HF::CompoundType create_hit_type() { @@ -27,6 +28,33 @@ HF::CompoundType create_runinfo_type() { } HIGHFIVE_REGISTER_TYPE(run_info_t, create_runinfo_type) + +HF::CompoundType create_lor_type() { + return {{"event_id" , HF::AtomicType{}}, + {"true_energy", HF::AtomicType{}}, + {"true_r1" , HF::AtomicType{}}, + {"true_phi1" , HF::AtomicType{}}, + {"true_z1" , HF::AtomicType{}}, + {"true_t1" , HF::AtomicType{}}, + {"true_r2" , HF::AtomicType{}}, + {"true_phi2" , HF::AtomicType{}}, + {"true_z2" , HF::AtomicType{}}, + {"true_t2" , HF::AtomicType{}}, + {"phot_like1" , HF::AtomicType{}}, + {"phot_like2" , HF::AtomicType{}}, + {"reco_r1" , HF::AtomicType{}}, + {"reco_phi1" , HF::AtomicType{}}, + {"reco_z1" , HF::AtomicType{}}, + {"reco_t1" , HF::AtomicType{}}, + {"reco_r2" , HF::AtomicType{}}, + {"reco_phi2" , HF::AtomicType{}}, + {"reco_z2" , HF::AtomicType{}}, + {"reco_t2" , HF::AtomicType{}}, + {"not_sel" , HF::AtomicType{}}}; +} +HIGHFIVE_REGISTER_TYPE(lor_t, create_lor_type) + + void set_string_param(char * to, const char * from, unsigned int max_len) { memset(to, 0, max_len); strcpy(to, from); @@ -53,6 +81,9 @@ void hdf5_io::ensure_open_for_writing() { group.createDataSet("hits" , dataspace, create_hit_type() , props); group.createDataSet("configuration", dataspace, create_runinfo_type(), props); + + group = open_for_writing->createGroup("reco_info"); + group.createDataSet("table", dataspace, create_lor_type() , props); } void hdf5_io::write_run_info(const char* param_key, const char* param_value) { @@ -95,3 +126,44 @@ std::vector hdf5_io::read_hit_info() { hits_table.read(hits); return hits; } + + +void hdf5_io::write_lor_info(double event_id, double energy, + double r1, double phi1, double z1, double t1, + double r2, double phi2, double z2, double t2){ + lor_t lor; + lor.event_id = event_id; + lor.true_energy = energy; + lor.true_r1 = r1; + lor.true_phi1 = phi1; + lor.true_z1 = z1; + lor.true_t1 = t1; + lor.true_r2 = r2; + lor.true_phi2 = phi2; + lor.true_z2 = z2; + lor.true_t2 = t2; + lor.phot_like1 = 1; + lor.phot_like2 = 1; + lor.reco_r1 = r1; + lor.reco_phi1 = phi1; + lor.reco_z1 = z1; + lor.reco_t1 = t1; + lor.reco_r2 = r2; + lor.reco_phi2 = phi2; + lor.reco_z2 = z2; + lor.reco_t2 = t2; + lor.not_sel = 0; + + std::vector data{lor}; + unsigned int n_elements = data.size(); + + ensure_open_for_writing(); + HF::Group group = open_for_writing -> getGroup("reco_info"); + HF::DataSet table = group.getDataSet("table"); + + // Create extra space in the table and append the new data + table.resize({lor_index + n_elements}); + table.select({lor_index}, {n_elements}).write(data); + + lor_index += n_elements; +} diff --git a/abracadabra/src/io/hdf5.hh b/abracadabra/src/io/hdf5.hh index 91505ec..968740e 100644 --- a/abracadabra/src/io/hdf5.hh +++ b/abracadabra/src/io/hdf5.hh @@ -19,6 +19,30 @@ typedef struct { double t; } hit_t; +typedef struct { + double event_id; + double true_energy; + double true_r1; + double true_phi1; + double true_z1; + double true_t1; + double true_r2; + double true_phi2; + double true_z2; + double true_t2; + double phot_like1; + double phot_like2; + double reco_r1; + double reco_phi1; + double reco_z1; + double reco_t1; + double reco_r2; + double reco_phi2; + double reco_z2; + double reco_t2; + double not_sel; +} lor_t; + // TODO There's something fishy about the implementation behind this interface: // it holds on to a filename, and then opens the file each time it wants to @@ -30,6 +54,9 @@ public: void write_run_info(const char* param_key, const char* param_value); void write_hit_info(unsigned int evt_id, double x, double y, double z, double t); + void write_lor_info(double event_id, double energy, + double r1, double phi1, double z1, double t1, + double r2, double phi2, double z2, double t2); void flush() { if (open_for_writing) { open_for_writing -> flush(); } } std::vector read_hit_info(); @@ -42,6 +69,7 @@ private: std::string filename; unsigned int runinfo_index; unsigned int hit_index; + unsigned int lor_index; std::optional open_for_writing; }; @@ -51,5 +79,4 @@ typedef struct { char param_value[hdf5_io::CONFLEN]; } run_info_t; - #endif From 740c912e8acb7ed9f22bd73a6040a9342b75bfd1 Mon Sep 17 00:00:00 2001 From: jmbenlloch Date: Thu, 29 Apr 2021 18:46:46 +0200 Subject: [PATCH 02/12] Use hdf5 writer in abracadabra to write LORs --- abracadabra/abracadabra.cc | 84 +++++++++++++++++++++++++++++++++++++- 1 file changed, 83 insertions(+), 1 deletion(-) diff --git a/abracadabra/abracadabra.cc b/abracadabra/abracadabra.cc index 0a96f8e..78dad38 100644 --- a/abracadabra/abracadabra.cc +++ b/abracadabra/abracadabra.cc @@ -5,6 +5,7 @@ #include "geometries/nema.hh" #include "geometries/samples.hh" #include "geometries/sipm.hh" +#include "utils/enumerate.hh" #include #include @@ -25,6 +26,80 @@ using std::make_unique; using std::unique_ptr; + +class write_with { +public: + write_with(hdf5_io& writer) + : PROCESS_HITS{ [this](auto step){ return this -> process_hits(step); } } + , END_OF_EVENT{ [this](auto hc) { this -> end_of_event(hc ); } } + , writer{writer} + {} + + bool process_hits(G4Step* step) { + auto track = step -> GetTrack(); + auto particle = track -> GetParticleDefinition(); + auto name = particle -> GetParticleName(); + if (name == "gamma") { + std::cout << "evt: " << n4::event_number() << "\t" << name << ", added" << std::endl; + hits.push_back(*step); + } + return true; + } + + void end_of_event(G4HCofThisEvent*) { + double event_id = n4::event_number(); + double total_energy = 0; + std::vector rs; + std::vector phis; + std::vector zs; + std::vector ts; + + // Save only events where two gammas has been detected + if (hits.size() == 2){ + std::cout << "Two gammas detected!" << std::endl; + + for (auto [i, step]: enumerate(hits)){ + auto pos = step . GetPostStepPoint() -> GetPosition(); + auto track = step . GetTrack(); + auto energy = track -> GetKineticEnergy(); + auto particle = track -> GetParticleDefinition(); + auto name = particle -> GetParticleName(); + auto id = track -> GetTrackID(); + auto time = track -> GetGlobalTime(); + + auto r = sqrt( pos.x()*pos.x() + pos.y()*pos.y() ); + auto phi = atan( pos.y() / pos.x() ); + + total_energy += energy; + rs .push_back(r); + phis.push_back(time); + zs .push_back(pos.z()); + ts .push_back(time); + + std::cout << std::setw (4) << event_id << ' ' + << std::setw(15) << name << ' ' + << std::setw (4) << id << ' ' + << std::setw (4) << round(energy / keV) << " keV " << pos << ' ' + << std::setw(10) << time << ' ' + << std::endl; + } + writer.write_lor_info(event_id, total_energy, rs[0], phis[0], zs[0], ts[0], rs[1], phis[1], zs[1], ts[1]); + } + hits = {}; + } + + // TODO: better docs: use for filling slots in n4::sensitive_detector + n4::sensitive_detector::process_hits_fn const PROCESS_HITS; + n4::sensitive_detector::end_of_event_fn const END_OF_EVENT; + +private: + std::vector hits{}; + hdf5_io& writer; + +}; + + + int main(int argc, char** argv) { // Detect interactive mode (if no arguments) and define UI session auto ui = argc == 1 @@ -105,8 +180,15 @@ int main(int argc, char** argv) { got_electron = false; }; + + // Add writer for LORs + // TODO: Filename should be taken from config file + std::string hdf5_file_name = "test_lor.h5"; + auto writer = new hdf5_io{hdf5_file_name}; + auto fwd = write_with{*writer}; + // pick one: - auto sd = new n4::sensitive_detector{"Noisy_detector", make_noise, eoe}; + auto sd = new n4::sensitive_detector{"Noisy_detector", fwd.PROCESS_HITS, fwd.END_OF_EVENT}; //auto sd = nullptr; // Set mandatory initialization classes From de385da1342e87bf87ecc4679431d4bf92370609 Mon Sep 17 00:00:00 2001 From: jmbenlloch Date: Thu, 29 Apr 2021 18:49:33 +0200 Subject: [PATCH 03/12] Replace Lxe by air for the first test --- abracadabra/src/geometries/samples.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abracadabra/src/geometries/samples.cc b/abracadabra/src/geometries/samples.cc index dfd0a4a..7125ffc 100644 --- a/abracadabra/src/geometries/samples.cc +++ b/abracadabra/src/geometries/samples.cc @@ -56,7 +56,7 @@ G4VPhysicalVolume* cylinder_lined_with_hamamatsus(double length, double radius, auto cavity_r = radius - dr_Xe; - auto xenon = volume("LXe" , lXe, cavity_r, radius, length/2, 0.0, CLHEP::twopi); + auto xenon = volume("LXe" , air, cavity_r, radius, length/2, 0.0, CLHEP::twopi); auto cavity = volume("Cavity" , air, 0.0 , cavity_r, length/2, 0.0, CLHEP::twopi); auto envelope = volume ("Envelope", air, 1.1*radius, 1.1*radius, 1.1*length/2); From bb99de48e9031514f15f68542248a26a7d25782e Mon Sep 17 00:00:00 2001 From: jmbenlloch Date: Thu, 29 Apr 2021 19:06:53 +0200 Subject: [PATCH 04/12] Add sample HDF5 file --- abracadabra/test_lor.h5 | Bin 0 -> 5512472 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 abracadabra/test_lor.h5 diff --git a/abracadabra/test_lor.h5 b/abracadabra/test_lor.h5 new file mode 100644 index 0000000000000000000000000000000000000000..3e72a181293c487bf9d41fca084273e6b30233af GIT binary patch literal 5512472 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 zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ_p?a%=U z0001hp#QJi5$FUB7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK LfB^#r4D1I24;%=f literal 0 HcmV?d00001 From 8d961621437eae8a0fb997cacebeeb71a42f9e44 Mon Sep 17 00:00:00 2001 From: Jacek Generowicz Date: Fri, 30 Apr 2021 03:53:53 +0200 Subject: [PATCH 05/12] Bugfix: stop storing time in phi column --- abracadabra/abracadabra.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abracadabra/abracadabra.cc b/abracadabra/abracadabra.cc index 78dad38..22406ae 100644 --- a/abracadabra/abracadabra.cc +++ b/abracadabra/abracadabra.cc @@ -72,7 +72,7 @@ class write_with { total_energy += energy; rs .push_back(r); - phis.push_back(time); + phis.push_back(phi); zs .push_back(pos.z()); ts .push_back(time); From 829d38a9cf93d0c2650d5082fbcab1bbab147b37 Mon Sep 17 00:00:00 2001 From: Jacek Generowicz Date: Fri, 30 Apr 2021 03:57:23 +0200 Subject: [PATCH 06/12] Bugfix: use atan2 instead of atan atan cannot distinguish between opposite sides of the circle, so information was being lost, and all the reconstructed LORs were missing the region of interest. --- abracadabra/abracadabra.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abracadabra/abracadabra.cc b/abracadabra/abracadabra.cc index 22406ae..26123d8 100644 --- a/abracadabra/abracadabra.cc +++ b/abracadabra/abracadabra.cc @@ -68,7 +68,7 @@ class write_with { auto time = track -> GetGlobalTime(); auto r = sqrt( pos.x()*pos.x() + pos.y()*pos.y() ); - auto phi = atan( pos.y() / pos.x() ); + auto phi = atan2( pos.y(), pos.x() ); total_energy += energy; rs .push_back(r); From 2950d82a9c6f153faffd083cb00a689c62556447 Mon Sep 17 00:00:00 2001 From: Jacek Generowicz Date: Sun, 2 May 2021 19:32:03 +0200 Subject: [PATCH 07/12] Add parameter names to prototype of phantom_in_cylinder This helps with live documentation in IDEs. --- abracadabra/src/geometries/samples.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abracadabra/src/geometries/samples.hh b/abracadabra/src/geometries/samples.hh index e2bbc44..21ae326 100644 --- a/abracadabra/src/geometries/samples.hh +++ b/abracadabra/src/geometries/samples.hh @@ -5,6 +5,6 @@ nema_phantom a_nema_phantom(); G4VPhysicalVolume* square_array_of_sipms(G4VSensitiveDetector* = nullptr); -G4VPhysicalVolume* phantom_in_cylinder(nema_phantom const&, double, double, G4VSensitiveDetector* = nullptr); +G4VPhysicalVolume* phantom_in_cylinder(nema_phantom const&, G4double length, G4double dr_Xe, G4VSensitiveDetector* = nullptr); G4VPhysicalVolume* cylinder_lined_with_hamamatsus(double length, double radius, double dr_Xe, G4VSensitiveDetector* = nullptr); From ceed487d25c5cba0e885727cffbaa32648e7ea45 Mon Sep 17 00:00:00 2001 From: Jacek Generowicz Date: Sun, 2 May 2021 20:23:39 +0200 Subject: [PATCH 08/12] Comment out noise in main --- abracadabra/abracadabra.cc | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/abracadabra/abracadabra.cc b/abracadabra/abracadabra.cc index 26123d8..67840fd 100644 --- a/abracadabra/abracadabra.cc +++ b/abracadabra/abracadabra.cc @@ -40,7 +40,7 @@ class write_with { auto particle = track -> GetParticleDefinition(); auto name = particle -> GetParticleName(); if (name == "gamma") { - std::cout << "evt: " << n4::event_number() << "\t" << name << ", added" << std::endl; + //std::cout << "evt: " << n4::event_number() << "\t" << name << ", added" << std::endl; hits.push_back(*step); } return true; @@ -76,12 +76,13 @@ class write_with { zs .push_back(pos.z()); ts .push_back(time); - std::cout << std::setw (4) << event_id << ' ' - << std::setw(15) << name << ' ' - << std::setw (4) << id << ' ' - << std::setw (4) << round(energy / keV) << " keV " << pos << ' ' - << std::setw(10) << time << ' ' - << std::endl; + // std::cout << std::setw (4) << event_id << ' ' + // << std::setw(15) << name << ' ' + // << std::setw (4) << id << ' ' + // << std::setw (4) << round(energy / keV) << " keV " << pos << ' ' + // << std::setw(10) << time << ' ' + // << std::endl; + } writer.write_lor_info(event_id, total_energy, rs[0], phis[0], zs[0], ts[0], rs[1], phis[1], zs[1], ts[1]); } @@ -259,11 +260,11 @@ int main(int argc, char** argv) { ui_manager->ApplyCommand("/vis/viewer/set/viewpointThetaPhi " + std::to_string(theta) + ' ' + std::to_string(phi)); }; - { - nain4::silence _{G4cout}; - for (int phi =PHI ; phi <360+PHI ; phi +=4) { view(THETA, phi); } - for (int theta=THETA; theta<360+THETAF; theta+=4) { view(theta, PHI); } - } + // { + // nain4::silence _{G4cout}; + // for (int phi =PHI ; phi <360+PHI ; phi +=4) { view(THETA, phi); } + // for (int theta=THETA; theta<360+THETAF; theta+=4) { view(theta, PHI); } + // } ui -> SessionStart(); } } From 7723d3246efb1cda3c49c1c1c294d974e01fac14 Mon Sep 17 00:00:00 2001 From: Jacek Generowicz Date: Sun, 2 May 2021 20:24:46 +0200 Subject: [PATCH 09/12] Add phantom definition to main --- abracadabra/abracadabra.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/abracadabra/abracadabra.cc b/abracadabra/abracadabra.cc index 67840fd..c1160c4 100644 --- a/abracadabra/abracadabra.cc +++ b/abracadabra/abracadabra.cc @@ -115,7 +115,18 @@ int main(int argc, char** argv) { {G4RunManagerFactory::CreateRunManager(G4RunManagerType::Serial)}; // For use with phantom_in_cylinder - auto phantom = a_nema_phantom(); + auto phantom = build_nema_phantom{} + .activity(5) + .length(140*mm) + .inner_radius(114.4*mm) + .outer_radius(152.0*mm) + .sphere(10*mm / 2, 20) + .sphere(13*mm / 2, 20) + .sphere(17*mm / 2, 20) + .sphere(22*mm / 2, 20) + .sphere(28*mm / 2, 0) + .sphere(37*mm / 2, 0) + .build(); int last_interesting_event = 0; size_t count_interesting_event = 0; From e6dbc8105a293180d3e25de6aab74ab314801a40 Mon Sep 17 00:00:00 2001 From: Jacek Generowicz Date: Sun, 2 May 2021 20:17:26 +0200 Subject: [PATCH 10/12] Halve size of phantom --- abracadabra/abracadabra.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/abracadabra/abracadabra.cc b/abracadabra/abracadabra.cc index c1160c4..6ead39b 100644 --- a/abracadabra/abracadabra.cc +++ b/abracadabra/abracadabra.cc @@ -118,14 +118,14 @@ int main(int argc, char** argv) { auto phantom = build_nema_phantom{} .activity(5) .length(140*mm) - .inner_radius(114.4*mm) - .outer_radius(152.0*mm) - .sphere(10*mm / 2, 20) - .sphere(13*mm / 2, 20) - .sphere(17*mm / 2, 20) - .sphere(22*mm / 2, 20) - .sphere(28*mm / 2, 0) - .sphere(37*mm / 2, 0) + .inner_radius(58*mm) + .outer_radius(76*mm) + .sphere( 5 *mm / 2, 20) + .sphere( 6.5*mm / 2, 20) + .sphere( 8.5*mm / 2, 20) + .sphere(11 *mm / 2, 20) + .sphere(14 *mm / 2, 0) + .sphere(19 *mm / 2, 0) .build(); int last_interesting_event = 0; From abedf42c57ecf6e4166b60aa452b250f792dc36c Mon Sep 17 00:00:00 2001 From: Jacek Generowicz Date: Sun, 2 May 2021 20:17:37 +0200 Subject: [PATCH 11/12] Switch off body activity in phantom --- abracadabra/abracadabra.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abracadabra/abracadabra.cc b/abracadabra/abracadabra.cc index 6ead39b..ba6dacd 100644 --- a/abracadabra/abracadabra.cc +++ b/abracadabra/abracadabra.cc @@ -116,7 +116,7 @@ int main(int argc, char** argv) { // For use with phantom_in_cylinder auto phantom = build_nema_phantom{} - .activity(5) + .activity(0) .length(140*mm) .inner_radius(58*mm) .outer_radius(76*mm) From 8fb01de17f773a6e850197f5f2cd58da3f10326e Mon Sep 17 00:00:00 2001 From: jmbenlloch Date: Mon, 3 May 2021 17:10:01 +0200 Subject: [PATCH 12/12] Remove commented lines --- abracadabra/abracadabra.cc | 9 --------- 1 file changed, 9 deletions(-) diff --git a/abracadabra/abracadabra.cc b/abracadabra/abracadabra.cc index ba6dacd..8416b39 100644 --- a/abracadabra/abracadabra.cc +++ b/abracadabra/abracadabra.cc @@ -40,7 +40,6 @@ class write_with { auto particle = track -> GetParticleDefinition(); auto name = particle -> GetParticleName(); if (name == "gamma") { - //std::cout << "evt: " << n4::event_number() << "\t" << name << ", added" << std::endl; hits.push_back(*step); } return true; @@ -75,14 +74,6 @@ class write_with { phis.push_back(phi); zs .push_back(pos.z()); ts .push_back(time); - - // std::cout << std::setw (4) << event_id << ' ' - // << std::setw(15) << name << ' ' - // << std::setw (4) << id << ' ' - // << std::setw (4) << round(energy / keV) << " keV " << pos << ' ' - // << std::setw(10) << time << ' ' - // << std::endl; - } writer.write_lor_info(event_id, total_energy, rs[0], phis[0], zs[0], ts[0], rs[1], phis[1], zs[1], ts[1]); }