diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index fe57c46..d8d7333 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.11.3","generation_timestamp":"2025-01-25T15:09:43","documenter_version":"1.8.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.11.3","generation_timestamp":"2025-01-25T17:52:39","documenter_version":"1.8.0"}} \ No newline at end of file diff --git a/dev/binaries/index.html b/dev/binaries/index.html index 86dbe71..e56cbca 100644 --- a/dev/binaries/index.html +++ b/dev/binaries/index.html @@ -1,4 +1,4 @@ -Binary Systems · StarFormationHistories.jl

Binary Systems

Here we review the API for including binary systems in our population models. Our Monte Carlo sampling methods supports all three models, while our smooth template modelling procedure only supports NoBinaries and RandomBinaryPairs. A comparison between a Monte Carlo population and a smooth template model for a RandomBinaryPairs model with binary fraction of 70% is shown below. The redward shift of the lower main sequence typical of populations with high binary fractions is clearly evident and robustly modelled.

Comparison of CMD-sampled population with smooth Hess diagram template, with binaries.

Types

StarFormationHistories.AbstractBinaryModelType

StarFormationHistories.AbstractBinaryModel is the abstract supertype for all types that are used to model multi-star systems in the package. All concrete subtypes should implement the following methods to support all features:

Note that all quantities relating to binary populations (e.g., binary_system_fraction) should be defined for the population at birth. As the stars in a binary system evolve, the more massive star may die before the system is observed at present-day. Of course, the stars in single-star systems can also die. If the rate at which binary systems become single-star systems is not equal to the rate at which single-star systems die, then there can be net transfer between these populations over time. Therefore the observed, present-day binary system fraction of an evolved population is not necessarily equal to the fraction at birth, which is the more fundamental quantity.

source
StarFormationHistories.RandomBinaryPairsType
RandomBinaryPairs(fraction::Real)

The RandomBinaryPairs type takes one argument 0 <= fraction::Real <= 1 that denotes the number fraction of stellar systems that are binaries (e.g., 0.3 for 30% binary fraction) and will sample binaries as random pairs of two stars drawn from the same single-star IMF. This model will ONLY generate up to one additional star – it will not generate any 3+ star systems. This model typically incurs a 10–20% speed penalty relative to NoBinaries.

source
StarFormationHistories.BinaryMassRatioType
BinaryMassRatio(fraction::Real,
+Binary Systems · StarFormationHistories.jl

Binary Systems

Here we review the API for including binary systems in our population models. Our Monte Carlo sampling methods supports all three models, while our smooth template modelling procedure only supports NoBinaries and RandomBinaryPairs. A comparison between a Monte Carlo population and a smooth template model for a RandomBinaryPairs model with binary fraction of 70% is shown below. The redward shift of the lower main sequence typical of populations with high binary fractions is clearly evident and robustly modelled.

Comparison of CMD-sampled population with smooth Hess diagram template, with binaries.

Types

StarFormationHistories.AbstractBinaryModelType

StarFormationHistories.AbstractBinaryModel is the abstract supertype for all types that are used to model multi-star systems in the package. All concrete subtypes should implement the following methods to support all features:

Note that all quantities relating to binary populations (e.g., binary_system_fraction) should be defined for the population at birth. As the stars in a binary system evolve, the more massive star may die before the system is observed at present-day. Of course, the stars in single-star systems can also die. If the rate at which binary systems become single-star systems is not equal to the rate at which single-star systems die, then there can be net transfer between these populations over time. Therefore the observed, present-day binary system fraction of an evolved population is not necessarily equal to the fraction at birth, which is the more fundamental quantity.

source
StarFormationHistories.RandomBinaryPairsType
RandomBinaryPairs(fraction::Real)

The RandomBinaryPairs type takes one argument 0 <= fraction::Real <= 1 that denotes the number fraction of stellar systems that are binaries (e.g., 0.3 for 30% binary fraction) and will sample binaries as random pairs of two stars drawn from the same single-star IMF. This model will ONLY generate up to one additional star – it will not generate any 3+ star systems. This model typically incurs a 10–20% speed penalty relative to NoBinaries.

source
StarFormationHistories.BinaryMassRatioType
BinaryMassRatio(fraction::Real,
                 qdist::Distributions.ContinuousUnivariateDistribution =
-                    Distributions.Uniform(0.1, 1.0))

The BinaryMassRatio type takes two arguments; the number fraction of stellar systems that are binaries 0 <= fraction::Real <= 1 and a continuous univariate distribution qdist from which to sample binary mass ratios, defined as the ratio of the secondary mass to the primary mass: $q = \text{M}_S / \text{M}_P$. The provided qdist must have the proper support of (minimum(qdist) >= 0) & (maximum(qdist) <= 1). Users may find the Distributions.truncated method useful for enforcing this support on more general distributions. The default qdist is a uniform distribution from 0.1 to 1, which appears to give reasonably good agreement to observations (see, e.g., Goodwin 2013).

source

Methods

StarFormationHistories.binary_system_fractionFunction
binary_system_fraction(model::T) where T <: AbstractBinaryModel

Returns the number fraction of stellar systems that are binaries for the given concrete subtype T <: AbstractBinaryModel. Has a default implementation of binary_system_fraction(model::AbstractBinaryModel) = model.fraction.

source
StarFormationHistories.binary_mass_fractionFunction
binary_mass_fraction(model::T, imf) where T <: AbstractBinaryModel

Returns the fraction of stellar mass in binary systems for the given concrete subtype T <: AbstractBinaryModel and initial mass function imf. imf must be a properly normalized probability distribution such that the number fraction of stars/systems between mass m1 and m2 is given by the integral of dispatch_imf(imf, x) from m1 to m2.

source
binary_mass_fraction(m::RandomBinaryPairs, imf)

The RandomBinaryPairs model uses a single-star imf. If a system is chosen to be a binary pair, two stars are drawn from the single-star imf and the more massive star is made the primary. Given this model, it can be shown that the expectation value for the mass of a binary system is twice the expectation value for single star systems:

\[2\int_{\text{M}_\text{min}}^{\text{M}_\text{max}} \text{M} \frac{d\text{N} \left( \text{M} \right)}{d\text{M}} d\text{M} = \int_{\text{M}_\text{min}}^{\text{M}_\text{max}} \int_{\text{M}_\text{min}}^{\text{M}_\text{max}} \left( \text{M}_P + \text{M}_S \right) \frac{d\text{N} \left( \text{M}_S \right)}{d\text{M}} \frac{d\text{N} \left( \text{M}_P \right)}{d\text{M}} d\text{M}_S \, d\text{M}_P\]

for primary mass $\text{M}_P$, secondary mass $\text{M}_S$, and single-star IMF $d\text{N} / d\text{M}$. As such, the fraction of total stellar mass in binaries is equal to the number fraction of all stars in binary pairs, which is given by StarFormationHistories.binary_number_fraction.

source
binary_mass_fraction(m::BinaryMassRatio, imf)

This binary model requires an imf that is defined by stellar system mass. If a system with a randomly sampled mass $M$ is is a binary, the primary and secondary mass are determined based on a binary mass ratio $q$ sampled from a user-defined distribution. By definition, the expectation value for the total mass of a binary system is equal to the expectation value for single-star systems. In this case the binary mass fraction is equal the binary system number fraction as given by StarFormationHistories.binary_system_fraction.

source
StarFormationHistories.sample_systemFunction
masses = sample_system(imf, rng::AbstractRNG, binarymodel::StarFormationHistories.AbstractBinaryModel)

Simulates the effects of non-interacting, unresolved stellar companions on stellar photometry. Implementation depends on the choice of binarymodel.

Arguments

  • imf: an object implementing rand(imf) to draw a random mass for a single star or a stellar system (depends on choice of binarymodel)
  • rng::AbstractRNG: the random number generator to use when sampling stars
  • binarymodel::StarFormationHistories.AbstractBinaryModel: an instance of a binary model that determines which implementation will be used; currently provided options are NoBinaries, RandomBinaryPairs, and BinaryMassRatio.

Returns

  • masses::SVector{N,eltype(imf)}: the masses of the individual stars sampled in the system in descending order where N is the maximum number of stars that can be sampled by the provided binarymodel as given by Base.length(binarymodel).
source

Notes

The trickiest part of including binaries in the smooth template modelling procedure is deriving the IMF weights. Let $M_p$ be the sorted list of initial masses for primary stars and $M_s$ be the sorted list of initial masses for secondary stars. Conceptually, the IMF weight for a binary system with primary mass $M_{p,i}$ and secondary mass $M_{s,j}$ should compute the number fraction of binary systems born with primary masses between $M_{p,i}$ and $M_{p,i+1}$ and secondary masses between $M_{s,j}$ and $M_{s,j+1}$ per unit solar mass formed.

In the case of the RandomBinaryPairs model, the IMF weights are calculated as follows, with $dN(M)/dM$ being the IMF for single stars, $\langle M \rangle$ being the mean mass of single stars over the full range of possible initial masses, and the integral in the denominator being over the range of initial masses in the isochrone. The integral in the denominator accounts for losses due to stellar evolution.

\[ w_{\text{IMF},i,j} = \frac{\int_{M_{p,i}}^{M_{p,i+1}} \int_{M_{s,j}}^{M_{s,j+1}} \frac{dN(M_p)}{dM} \frac{dN(M_s)}{dM} \ dM_p \ dM_s}{\langle M \rangle \ \int_{M_{\text{min}}}^{M_{\text{max}}} \frac{dN(M)}{dM} \ dM}\]

+ Distributions.Uniform(0.1, 1.0))

The BinaryMassRatio type takes two arguments; the number fraction of stellar systems that are binaries 0 <= fraction::Real <= 1 and a continuous univariate distribution qdist from which to sample binary mass ratios, defined as the ratio of the secondary mass to the primary mass: $q = \text{M}_S / \text{M}_P$. The provided qdist must have the proper support of (minimum(qdist) >= 0) & (maximum(qdist) <= 1). Users may find the Distributions.truncated method useful for enforcing this support on more general distributions. The default qdist is a uniform distribution from 0.1 to 1, which appears to give reasonably good agreement to observations (see, e.g., Goodwin 2013).

source

Methods

StarFormationHistories.binary_system_fractionFunction
binary_system_fraction(model::T) where T <: AbstractBinaryModel

Returns the number fraction of stellar systems that are binaries for the given concrete subtype T <: AbstractBinaryModel. Has a default implementation of binary_system_fraction(model::AbstractBinaryModel) = model.fraction.

source
StarFormationHistories.binary_mass_fractionFunction
binary_mass_fraction(model::T, imf) where T <: AbstractBinaryModel

Returns the fraction of stellar mass in binary systems for the given concrete subtype T <: AbstractBinaryModel and initial mass function imf. imf must be a properly normalized probability distribution such that the number fraction of stars/systems between mass m1 and m2 is given by the integral of dispatch_imf(imf, x) from m1 to m2.

source
binary_mass_fraction(m::RandomBinaryPairs, imf)

The RandomBinaryPairs model uses a single-star imf. If a system is chosen to be a binary pair, two stars are drawn from the single-star imf and the more massive star is made the primary. Given this model, it can be shown that the expectation value for the mass of a binary system is twice the expectation value for single star systems:

\[2\int_{\text{M}_\text{min}}^{\text{M}_\text{max}} \text{M} \frac{d\text{N} \left( \text{M} \right)}{d\text{M}} d\text{M} = \int_{\text{M}_\text{min}}^{\text{M}_\text{max}} \int_{\text{M}_\text{min}}^{\text{M}_\text{max}} \left( \text{M}_P + \text{M}_S \right) \frac{d\text{N} \left( \text{M}_S \right)}{d\text{M}} \frac{d\text{N} \left( \text{M}_P \right)}{d\text{M}} d\text{M}_S \, d\text{M}_P\]

for primary mass $\text{M}_P$, secondary mass $\text{M}_S$, and single-star IMF $d\text{N} / d\text{M}$. As such, the fraction of total stellar mass in binaries is equal to the number fraction of all stars in binary pairs, which is given by StarFormationHistories.binary_number_fraction.

source
binary_mass_fraction(m::BinaryMassRatio, imf)

This binary model requires an imf that is defined by stellar system mass. If a system with a randomly sampled mass $M$ is is a binary, the primary and secondary mass are determined based on a binary mass ratio $q$ sampled from a user-defined distribution. By definition, the expectation value for the total mass of a binary system is equal to the expectation value for single-star systems. In this case the binary mass fraction is equal the binary system number fraction as given by StarFormationHistories.binary_system_fraction.

source
StarFormationHistories.sample_systemFunction
masses = sample_system(imf, rng::AbstractRNG, binarymodel::StarFormationHistories.AbstractBinaryModel)

Simulates the effects of non-interacting, unresolved stellar companions on stellar photometry. Implementation depends on the choice of binarymodel.

Arguments

  • imf: an object implementing rand(imf) to draw a random mass for a single star or a stellar system (depends on choice of binarymodel)
  • rng::AbstractRNG: the random number generator to use when sampling stars
  • binarymodel::StarFormationHistories.AbstractBinaryModel: an instance of a binary model that determines which implementation will be used; currently provided options are NoBinaries, RandomBinaryPairs, and BinaryMassRatio.

Returns

  • masses::SVector{N,eltype(imf)}: the masses of the individual stars sampled in the system in descending order where N is the maximum number of stars that can be sampled by the provided binarymodel as given by Base.length(binarymodel).
source

Notes

The trickiest part of including binaries in the smooth template modelling procedure is deriving the IMF weights. Let $M_p$ be the sorted list of initial masses for primary stars and $M_s$ be the sorted list of initial masses for secondary stars. Conceptually, the IMF weight for a binary system with primary mass $M_{p,i}$ and secondary mass $M_{s,j}$ should compute the number fraction of binary systems born with primary masses between $M_{p,i}$ and $M_{p,i+1}$ and secondary masses between $M_{s,j}$ and $M_{s,j+1}$ per unit solar mass formed.

In the case of the RandomBinaryPairs model, the IMF weights are calculated as follows, with $dN(M)/dM$ being the IMF for single stars, $\langle M \rangle$ being the mean mass of single stars over the full range of possible initial masses, and the integral in the denominator being over the range of initial masses in the isochrone. The integral in the denominator accounts for losses due to stellar evolution.

\[ w_{\text{IMF},i,j} = \frac{\int_{M_{p,i}}^{M_{p,i+1}} \int_{M_{s,j}}^{M_{s,j+1}} \frac{dN(M_p)}{dM} \frac{dN(M_s)}{dM} \ dM_p \ dM_s}{\langle M \rangle \ \int_{M_{\text{min}}}^{M_{\text{max}}} \frac{dN(M)}{dM} \ dM}\]

diff --git a/dev/doc_index/index.html b/dev/doc_index/index.html index 1d7e988..6f58d7a 100644 --- a/dev/doc_index/index.html +++ b/dev/doc_index/index.html @@ -1,2 +1,2 @@ -Index · StarFormationHistories.jl

Index

+Index · StarFormationHistories.jl

Index

diff --git a/dev/examples/index.html b/dev/examples/index.html index d87f50f..63a1142 100644 --- a/dev/examples/index.html +++ b/dev/examples/index.html @@ -1,2 +1,2 @@ -Examples · StarFormationHistories.jl

Examples

We have constructed an example Jupyter notebook that highlights some common use cases supported by the package. It is recommended that you read some of the background in our main documentation before or concurrently with the example. The notebook is available in the repository as examples/fitting1.ipynb and can be viewed in rendered form at this link. It relies on a custom isochrone file which can be made available upon request to the package author.

There are other scripts in the examples directory of the source repository that are used to generate figures for the documentation and provide more targeted examples of usage.

+Examples · StarFormationHistories.jl

Examples

We have constructed an example Jupyter notebook that highlights some common use cases supported by the package. It is recommended that you read some of the background in our main documentation before or concurrently with the example. The notebook is available in the repository as examples/fitting1.ipynb and can be viewed in rendered form at this link. It relies on a custom isochrone file which can be made available upon request to the package author.

There are other scripts in the examples directory of the source repository that are used to generate figures for the documentation and provide more targeted examples of usage.

diff --git a/dev/fitting/figures/covar_0.svg b/dev/fitting/figures/covar_0.svg index d14be7d..cab7807 100644 --- a/dev/fitting/figures/covar_0.svg +++ b/dev/fitting/figures/covar_0.svg @@ -1,12 +1,12 @@ - + - 2025-01-25T15:08:10.174376 + 2025-01-25T17:51:50.105324 image/svg+xml @@ -21,53 +21,53 @@ - - - + +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" id="image721384e50c" transform="matrix(4.839796 0 0 2.8 61.705464 12.037394)" style="image-rendering:crisp-edges;image-rendering:pixelated" width="49" height="99"/> - - - + + - - + - + - + - + - + - + @@ -179,7 +179,7 @@ z - + - - + - - + + + - + - - + + + + + - + + - + - - + + - + - + + - + - - + + - + - + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - + - + - - + +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" id="imagedaddea5fad" transform="matrix(4.839796 0 0 2.8 298.855464 12.037394)" style="image-rendering:crisp-edges;image-rendering:pixelated" width="49" height="99"/> - - + + - + - + - + - + @@ -743,14 +846,14 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAKbklEQVR4nO2b8XLjNg6HP4CU5Hi3vWnn - + - + - + - + @@ -758,23 +861,23 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAKbklEQVR4nO2b8XLjNg6HP4CU5Hi3vWnn - + - + - + - + - + - + @@ -782,65 +885,93 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAKbklEQVR4nO2b8XLjNg6HP4CU5Hi3vWnn - - + + - + - - + + - + - - + + - + - - + + - + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - - - - - + - + - - + +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" id="imagee4c51831f2" transform="matrix(5.693878 0 0 2.8 619.705464 12.037394)" style="image-rendering:crisp-edges;image-rendering:pixelated" width="49" height="99"/> - - + + - + - + - + - + @@ -1022,14 +1153,14 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAU2UlEQVR4nO2c2Y8l91XHP+dX29369ja9 - + - + - + - + @@ -1037,23 +1168,23 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAU2UlEQVR4nO2c2Y8l91XHP+dX29369ja9 - + - + - + - + - + - + @@ -1061,65 +1192,93 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAU2UlEQVR4nO2c2Y8l91XHP+dX29369ja9 - - + + - + - - + + - + - - + + - + - - + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - + - + - +iVBORw0KGgoAAAANSUhEUgAAABQAAAGBCAYAAABmVZFJAAAB/klEQVR4nO2cgW0DMQwD7f+M1hG6/yhNh9AJIEFqAKL3pGh/GuT+3N/vAedz7kPqHVbtnPO5z2UFizweHvnwyKzghsuspgHySUSGg327y9NZQIb/QnxTHJATXc5Dbn1Nx8JleeQ8l798faF6DTYwPDIdm41dpgX1kevyXFAemW9sVs8i2HmH1DfPZf1gB96+AuuLXj2LQwoW1HcZf3l0aGxY0AG5Lk8FHZDr8lTQ4Y4NCzq43JvDcIo8nyIDgg7IfdebCuojRx6jsGCRx2OArL/LgfWFfnf6WCB3l+eCgcj6wQ6srwZ7LhiIrB/svF3Wf4YN9nwCg52IfC77YtFdnk+DPZ8Nl9lN0XfZ4OYQeceGGztyl1nBujyfjUNKvbHxYMP/yWywgVmorxMY7CIPxwKZFTSoL32XaVMMkAN3GSa2QOZ3GdVbQH4S66suTwX1XX7gK3Fdnk+R58Mj05ti0Nj0M3RwORBZPth1WU/Q4CpigHz/aEF55Lo8Fnz1kXmX2Wdo0NivwbkcV18Oq5dnSiAyvnrybcMjy58p9BFQ5Pm0vubDI9PlYHAldkCOe/FZ2GV1lxd2Wd3lhWDHuRx44TR4o08MdtwHknxj6wc779O5hWCjehbIqNzOIUULwl/i3DikYMFX/mczH9gUC5dpZAOXWU38GW7UF47MCuLI/3eYjgRi4GjtAAAAAElFTkSuQmCC" id="image3b3eeccb6f" transform="scale(1 -1) translate(0 -277.2)" x="535.68" y="-11.52" width="14.4" height="277.2"/> - - + + - - + - + - + @@ -1241,45 +1400,15 @@ L 3.5 0 - - + + - + - + - - - - + @@ -1289,15 +1418,15 @@ z - - + + - + - + - + @@ -1307,15 +1436,15 @@ z - - + + - + - + - + @@ -1325,15 +1454,15 @@ z - - + + - + - + - + @@ -1343,15 +1472,15 @@ z - - + + - + - + - + @@ -1361,15 +1490,15 @@ z - - + + - + - + - + - - - + + - - + + - - + + diff --git a/dev/fitting/figures/covar_1.svg b/dev/fitting/figures/covar_1.svg index b25758c..a1aa32a 100644 --- a/dev/fitting/figures/covar_1.svg +++ b/dev/fitting/figures/covar_1.svg @@ -6,7 +6,7 @@ - 2025-01-25T15:08:07.282632 + 2025-01-25T17:51:46.603570 image/svg+xml @@ -37,37 +37,37 @@ L 61.705464 7.2 z " style="fill: #ffffff"/> - + +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" id="image2a01055a27" transform="matrix(4.839796 0 0 2.8 61.705464 7.2)" style="image-rendering:crisp-edges;image-rendering:pixelated" width="49" height="99"/> - - - + + - - + - + - + - + - + - + @@ -252,17 +252,17 @@ z - - + - + - + - + - + - + @@ -368,12 +368,12 @@ z - + - + @@ -385,12 +385,12 @@ z - + - + @@ -671,25 +671,25 @@ L 298.855464 7.2 z " style="fill: #ffffff"/> - + +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" id="imagedb3e213b7b" transform="matrix(4.839796 0 0 2.8 298.855464 7.2)" style="image-rendering:crisp-edges;image-rendering:pixelated" width="49" height="99"/> - - + + - + - + @@ -699,12 +699,12 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAJb0lEQVR4nO2c6W5byRFGT3X33ShK1GqP - + - + @@ -714,12 +714,12 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAJb0lEQVR4nO2c6W5byRFGT3X33ShK1GqP - + - + @@ -739,35 +739,35 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAJb0lEQVR4nO2c6W5byRFGT3X33ShK1GqP - + - + - + - + - + @@ -950,25 +950,25 @@ L 619.705464 7.2 z " style="fill: #ffffff"/> - + +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" id="image43ac3b588b" transform="matrix(5.693878 0 0 2.8 619.705464 7.2)" style="image-rendering:crisp-edges;image-rendering:pixelated" width="49" height="99"/> - - + + - + - + @@ -978,12 +978,12 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAQk0lEQVR4nO2bW4xd11nHf99aa+9zmTP3 - + - + @@ -993,12 +993,12 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAQk0lEQVR4nO2bW4xd11nHf99aa+9zmTP3 - + - + @@ -1018,35 +1018,35 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAQk0lEQVR4nO2bW4xd11nHf99aa+9zmTP3 - + - + - + - + - + @@ -1205,18 +1205,18 @@ z " style="fill: #ffffff"/> +iVBORw0KGgoAAAANSUhEUgAAABQAAAGBCAYAAABmVZFJAAAB/klEQVR4nO2cgW0DMQwD7f+M1hG6/yhNh9AJIEFqAKL3pGh/GuT+3N/vAedz7kPqHVbtnPO5z2UFizweHvnwyKzghsuspgHySUSGg327y9NZQIb/QnxTHJATXc5Dbn1Nx8JleeQ8l798faF6DTYwPDIdm41dpgX1kevyXFAemW9sVs8i2HmH1DfPZf1gB96+AuuLXj2LQwoW1HcZf3l0aGxY0AG5Lk8FHZDr8lTQ4Y4NCzq43JvDcIo8nyIDgg7IfdebCuojRx6jsGCRx2OArL/LgfWFfnf6WCB3l+eCgcj6wQ6srwZ7LhiIrB/svF3Wf4YN9nwCg52IfC77YtFdnk+DPZ8Nl9lN0XfZ4OYQeceGGztyl1nBujyfjUNKvbHxYMP/yWywgVmorxMY7CIPxwKZFTSoL32XaVMMkAN3GSa2QOZ3GdVbQH4S66suTwX1XX7gK3Fdnk+R58Mj05ti0Nj0M3RwORBZPth1WU/Q4CpigHz/aEF55Lo8Fnz1kXmX2Wdo0NivwbkcV18Oq5dnSiAyvnrybcMjy58p9BFQ5Pm0vubDI9PlYHAldkCOe/FZ2GV1lxd2Wd3lhWDHuRx44TR4o08MdtwHknxj6wc779O5hWCjehbIqNzOIUULwl/i3DikYMFX/mczH9gUC5dpZAOXWU38GW7UF47MCuLI/3eYjgRi4GjtAAAAAElFTkSuQmCC" id="image5577396712" transform="scale(1 -1) translate(0 -277.2)" x="535.68" y="-6.48" width="14.4" height="277.2"/> - - + @@ -1233,12 +1233,12 @@ L 3.5 0 - + - + @@ -1250,12 +1250,12 @@ L 3.5 0 - + - + - + - + - + - + + - + - + diff --git a/dev/fitting/figures/covar_m1.svg b/dev/fitting/figures/covar_m1.svg index 62b6cba..153fb09 100644 --- a/dev/fitting/figures/covar_m1.svg +++ b/dev/fitting/figures/covar_m1.svg @@ -1,12 +1,12 @@ - + - 2025-01-25T15:08:02.171058 + 2025-01-25T17:51:41.142415 image/svg+xml @@ -22,52 +22,52 @@ - - + +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" id="imaged1b8a572c8" transform="matrix(4.839796 0 0 2.8 61.705464 7.2)" style="image-rendering:crisp-edges;image-rendering:pixelated" width="49" height="99"/> - - - + + - - + - + - + - + - + - + @@ -179,7 +179,7 @@ z - + - - + - - + + - @@ -320,55 +292,85 @@ z - - + - - + + + + + - - + - + - - + + - @@ -376,84 +378,143 @@ z - - + - + - - - - + + + + + + + - - - + + - + - - + + - - + - + - - + + - - + - + - - + + - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -461,28 +522,28 @@ z - - - - - + - + - - + +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" id="imagec246510a5d" transform="matrix(4.839796 0 0 2.8 298.855464 7.2)" style="image-rendering:crisp-edges;image-rendering:pixelated" width="49" height="99"/> - - + + - + - + - + - + @@ -751,14 +812,14 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAK80lEQVR4nO2b23IcOXKGv0wA1QdJM5Zk - + - + - + - + @@ -766,23 +827,23 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAK80lEQVR4nO2b23IcOXKGv0wA1QdJM5Zk - + - + - + - + - + - + @@ -790,79 +851,93 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAK80lEQVR4nO2b23IcOXKGv0wA1QdJM5Zk - - - - - - - - - - - - - - - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - + - - + +iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAU6klEQVR4nNWcSYxl51XHf993pzfW2FP15LjbjmdhbBywo2AjJSQgBIJIliJWLFiyY8MKgcQSFmyQkFCEEIisoogkQCAiiQKJE4yHhvagbk/dXXZ3V9WrevO7w3dYnO/e92rqydW2c6TSu++9++79znem/xlumfv+7M/FFIY7IQkEgDv9/UGR3W8B5QLL173IFOZjZwDA7vdFubhPwiJvRvsyUdKNJCF2/+8+SropE7OS2Llo47ZL6UYM3026KRMwXbxxZhsju5j6mFTP3sruze64LQxGwIgefxJoX++0k8qF7/e5iz4++whv5SQj4PaQWCkJFwhBanCBYAuDzOyLBHLX1WwXExIIYsFmemOxgrBddcTOLMwok2KlOkesIIG/xkcgoF1MaADzx7J9DWKVQQkgKEAsGKe/mbUtWxgoVEI7PdjdoH29U+l5SkMud98UBpvqDhvPiB77XZ/h+qMy/H2ZmF2AqdSkZMb/0oLNvVEbKgZUYoIL5IYu+aDopoZdSkB3XHTxBlwoBGNlzuZeBY1XsdyorcwauNkdHA+K9pVE6Y1093WhtjC6QNEFY/AGrMdFrEak6qeMltLZyz0fOBOzhjkbyEovBbqbNlVjDoYGCfRYDOR18UwJWVswDrUd2KZmd5UJVZkdN/FvXSKYXBdR1IW8pQsORtPvg9TgQpVM1DW4UJBQ9NVOXfDdCIoWZpKbPXRWrO4+ot+7SKXgIijqXpVEN8BmuvtFTe3FOKP2InqObpY6goOUitUL77V4qV7FgkTqicKRIZtz+r1A1tQdN7khmKgEbOpVLfMRO58GRCwE/vsDZWI/En/DYGTAQbrgFGJMjLrX1F8kM9hMd9k4L4lUr24zU7lfF07tJEgPzlPtjtgeJ9lc3Wre0EW7QKhdt4gBCSvt8B4LXKS2IQEEY8NkURQc5urZipoQjLykShcsbMNZd0p7SmJ7oFM1UEZ0sXldCEdQ1AUxEEz0L68L9auGdMERjgzBeKpiYc8zUILGAzTwm6iTYDMvkZaQN/XGRU2YLKkdKHaCwdmMcGAYHVUbyVpOpWYhHKr6SeR33kOW8h4HxsTOi8lMsCsxURkzwoHCbRcLNoW4J8ydjwgmqlrxhqV23WJEpeUiKjULxnpcebQDwFfTOOGmuYFYvXGQGo0RPkIbBxIK0cCQLxQV7Oiehaylu2tTQxHr+WEfoi1TOQAXaiB0sUqrcrsfUhi7DLsMSKaY7t74SE6yFmByyBsAQv1ySDiEYAwuMkyWHa5RYCaWZC1gsijUrxmGZzLC9ZCkYwgwuHhGuh6alLHkTo18TwBoMx9xvU3UV0PEQjavzEVdw/iIkLVV7YqGY/71ELAEE6F7VsiXM/JeTO1yRNyFdK70dB4klrAmNRUOu1O6YfHMZhqU0kWngW5gqpsmG4ai5dS4M8tkCbYezuk85giHhuh6RDbn8ZRfZNQzRD1DkZTw3asV6izuVK1uXjyzQrRlKRL1+aDuVAyYiSHuaqAbH89YOBdSXw3Ia0K8aQgHGiQnyypBm6Hxo9DoD1PYXtrNgTJhnGcioNotCSHpQNoGW6i9SAC1NUvj7YjJIqTzCi3SBWFyZky8BUUiFLG65birjLtIXW/ekG05+5243D2ZcIEggeAiwYXqueItdZfDFaFoKJ4KR6VHA/uZTVaeu0w+Xyj8yGD5+4lKITdkC46kYwiHkM4JUdeQNTWI2skUmtyJy91d7TB6oXJHwqEWAfK6z94CNcasJRQJxJuG8UpBfG6etc4C9SYUj/U5PN9n/N5RXATNVUPaDsia6gySjqlAZdBDg6ihctm366n2lkTkiwJO9V0MTA45grFCj3CkzLXfNQQTmH8twBSG4TGh/Z4QvdTiyqVl+qcgGBkmn+sRjtG0NpoW3Oxk6nKDGWnA7anVLiZKt1oyM1lyYCHsqyRcQ+FE1IOthwpsBuFQWHrNUdSE8ZKqzMl/tjQv6x2CF9vMfeEDGo91qF81jJfUPqYVFcD5dLZcw22o1S4mysgtgYDzO+Qg6nu/PrSkC0J93bH0sqWoQ5AJW/dawiMjRkdEY8Lvr9F5JiUY6+5u/PAYhRiyJtTWDI1VdeGl6thM71Ukt18x3FMSMNNk8clO1hZGxwr/HWydtWQNw/BEwWTBMrg/ZembdbJjGQ9/8U1G3z5K/c2EvA6D+1PCIYxfX6CoCf1PZ6QLaHEh0SxwsuxAZpxFdOtx44aScJFnLNCcIOpaooH6/6ineGnxnGXr0wXNCzFXnys48e2AVy+fIF2AuAt501G7FJO14chPHQtvQP29iPoHwvhYTtRTaURdqzC/KV4aH0ISJUmg4nWxLxIYNdLcR1bj9NcbT6dIzTH4VE7j7YjN+wKiV5uMjueEX1rzi9P8e3jYsv64kHRgdMzQuKRwJp2TKjMM+4Zw5Otc3JqB78mE6qjmCjYDF6tHkhBq6+rfs5ZPN0PH4kshdmSpXxWGpwpaVxQgdl9ZpnhoQHYyZXS8oHcGls4Ztp6aUNS8pEXddFlBcbFsS2NvxcBvWDyTYOqpJksq5uFxR23d0H7PkXRg5RsxkwXD/NkOG487ll6yLP/T65z4wYjGox2K9+uYjYj51wLyVsH6Ew4ZBbrTBqKhrsJFeBdrKimXpdCbkbn/T/9i11lVjaiEyYUaoIS+XBMLUd8wXHE0Vi3pol4iWyhAoHZ1GkPtBEYrBRILZmJpXrGMDguLr8HGo7r78ZalqMk02Yp8Hg4Vur1R8NvtnWbK8TbTixY1LcPUrxqyeYeLYXiqIFm3GrlrwvEf5PzRs9+k9VbI+HTK2efeZun/Cg6dyzn6I8PK9yxJx5K2NQ/f+rQGTFd35DXRwBdOF40vhd4K7SmJWWmUO2BcWSAwRH0V//BEQbRpSTrTaFtbF4YrhuHDY87+jZDORfRXAvJf36R7vUW0HiIG5i/A+jMp8WpMMFJk4CKVONbjsYIqNb5RMfoGKHamBhuo2G2mf0WsN6xdDYi7htq61l5/+SsvsnU/DD6VE15OCIY5aduCgdY/zGMiR+3BTWwG65/JCWLHI5+7gM2pVNL6Jk/cVYhjZvojt80ElJ0eppW9wpDOe6/i1FuNjghZy9B9IOdbP/05Dr3imDvW4/DLwntfbJPXDFnTsPBflzj59YCTfzhWj3Q1pP5ynZdfPUM658ueBerCc8VUtvA46yYw/Yb9iaoHZ3xpP4WoUNBnCugfL6CZszlvCVoZ8fkGw6Mw/9U28VZK1A+4+lTEPc++y1tPL7HUXuON6wsEl9WVpgLHvwcbDxokhOG9GckHYZW/5E0h6s6gh31U6oZMuECqYnDecj5lVVXK2r4XsRlxz78UrD3aINkSOo8IWTNkshRgCkg24Q9Of5c/+dvfo3Ex4AzCxsPQ+WxK9FaNrGFJFxUh19+LtCBnFa6DxgsXbd/QXZt9IyaMM/5P8+syE0MM8aZVozs04dLnAx777deobTiOPXiNYy+MifqGoiH8zu9+n7+/+jRGYPVzDS4+n2AEmudqSCB0HlR8lh7OtY7l67ouYFoyvUnU3tc7lSS+vxBM1FMZgcmiqxBnsm5pvyt0HgFE8+94y9B7JKVxIaa2JuRNQ+tyQeeBgPm3HJN53Zj2l9/nvdeP0n4rYLwsxD3D6LAup7nqj83UJvfzUjf3xB56wLTpWLtmCUZG48QDI64/XVDUnBpmU7Q2NbGMjjq2nhtRv+4YHgkIntxk47eGZC3D5gPClbUF7vvahPGykGwaRkccQaoGPToilfRNfmPjvikT1md4LhTfZBHSBYUgGJj/fo36lZAjLxjytkMsNK8Ippnz4F93cJllvGiprzviMGf56w29bm6Q1Rrv/EadZNMwOOk85HdEXVVb46iCnin2nye5ecmmLOFn01q8zX20jYTxsmGy5Lj2xRRp5YR9w9YXhsgwJPvLIYv/mZA+2+X9Zx3tv5qn/Y8/xoXQeN9Qv2rJFgrCgRBvWSSA1rsBo+MFUd9Uzf68qahgv2TppjYBXo18BlZ2RhGobRh6n3LEW8ZLAHr3qPpli46wZ8kWCwiEhZcjes+MqL9UJ5sTspaQdCx5Q8gO5eCgdSGi/2BKcjkmm9MinM0U/odjLV5MEcSUoVtCJ6VKGWcqlKkqBrXrah95Q6USdw3HXiioXwmYf2yduddDorWQvAkXfuWrxM+usXReaL9tOfqTVCvkhaG2GiEW2udjMOowEG0rh+Np2lquRedHZH8mds5Auaox6ScIQj0uEg1awzMZtTVFopNlR/eekIULBYMXDtG7r2D58WskHeGPrz/CVreJzYX+aeGd57W0ufhKwPh4xuCBlLgr1K5rOhxv+Q3zJVSx06alcdMhyj2Z2Kl7sylrCQIxeIgOyWpUGaBNDf17hI2HAi0g9y1XLxxicNzwdy//Ike/kXDl1wqCMUTXIsInO9gcok5IdC1ivGxIF2DxvJY2JfBpwMxIxk7jvkWwO2UmGJvKW2TzQrKhBm4LrWK034HWO4bGVSFbKMiXcs5+baKln62ItS8PmTsXk65kLP2vEH9rgWggFCfGuEC7sUVN6DwEwxNaKTRO+yR2nxHWW2ZCjFcrX+F2kRAMDXlDPdfwuGN0THwHSaWy+ErA3PmIi19J+MwvvMnRHxmCcy26D+TgDJ3fHHLov7sMj1hq5+vEm7pJcccQbxnsZHsffT+6LUnYcq7JKXYqk/siEZLrlrhjGJyA8WFhsmjoPF4wPizMvRFw7oMVrn4pJX9kgMkNSytbpJ0a15+awxQwPJPRfF+YHHIY0YJ0vGU0eLa081qqFWwPerfFRDkp42Ih3tQSSziGINX2bzYvtN+FuKMG2boYsnhemHs3x/xknvD9hDwNOPUdofPOIosvB0wWDcPjQu1yxOaD4Nq5NjUd5C2qNrJLZDorAttGLG5pBrBiohzcmik5FjPNGEQYnFAm05WMeDXCRZZgbMmf7FH7cZsj/woXn4ewa+k/N8BcaOIiYe4ijJcNzUsxRU0lkddUGi6eDoiVdWKYNkJv27DLV1tWBudVraKeusG8KYR9w8KLMTY1jI4VpL/UI7/UpPm+Y7ASc/iFgKIm/OrZN4ge7lK0HOtPFoQjfHUcGqtGA1yoCy8LedqS3m4gtySJ2YnKMmoDVaUua/teXt9QZOoWN38+Zf7VGCMB2bhFfc2w8ahw7McFlz5vWfmh8J3BE4QjQxJqtbB/SrZBm6hnGB/x5c0+1czITrolSeyJWXyBzaZqcIh6qJKiaxHds46oq5XD5qojv2fMtSdCTnxf2Hh+SHPVMD7kWHzdaTxoFsRblvo1Q/2aJkPxhlUk67ut+KblbD3qttSppCq7MhrBkw1tvAdjnUyzmX4eb1oGpxwuEgZf7tL8n7q2B0KDe7NF714dn9h4xDB4dAz1guYVId4SevcW2jcPVE1dRNUaq9bhZw3viAmYaYmFvtTiB1CMaN8u6ulQSrJuiXqGfqfB8IRj7plrDI/oZ3J0QrJuSFcylv8jofZuwvCowUWGsG8xue/31aaNy6omNoPnbss7zVIJwqwfYIy6pmr1WqP5AcDohCPsW4L1iGAMG68cpjjjSE73mf/3Np0nMppvxjqRkOtuu1iDni0g2SxL/dOhFrHTbpOYO1Snkmyh7hRHNfRbqlLUM9SuWWpXA9pv6fukY8hXUpJ1S+27bfr3QLAV4iIYHRNtC/scwiXCeElwgTKWN8o+mH+502C3k5yP3viE3oiOTeS+K1rUxKuEYXw8Z3xEmHsxoXFNGJzU3y2+pqpYu25INrTmlNeFdKnA5pqq7po9d3eQT+yk2ZlBW5jp1ABMU0qf4EsIk0VoXQhxkdC717Hx2ZTmZbj3qUv0T2vTxjjon4al89r709lbP/SVTUtFMFWrIr6DiF3StqdbzDTzK2I/BuRhus31/fh4gduyhH2LzSC5mADClX87TXbIEeeWvAHZqQlrQUK8aahdtKTzkM354eJgOiBQjuSV3aQPpU4lVTO0uXZ5bKoBMGup9wp7VvOQoXqb/mmhdy+UQ8LpgiMYQXQ5IfT1qsFJHRJLNny5xte+yiGy2fvesXeCaSQvn5sAVQFEJxCgHKUwuNAQpCAjg8vUfuKukC5oDjI4rgaczel2t97WcaPx8lS1JPWqtKMM+KEksSuSGz/YZf1wVqT9uLLHkc5B1hLSRYfJoX9KocTW/UJzVSsecceCM4wPyTRSC4Rj42tg0/pTOWB2IOpk3LSPIX6SE1vutvETOnpCkBoaqx7GD0w1JNk/qaoW9Q31DyxYnWKwmam6RhJQ2UbpVIwzB8NESTLjpexED/KGzwbtdNQob0I4RANjoYEtHKqHGi/5mUGYVjzKMe9g6pGqe1r5cDaxLxnACEVM1Xeohr9SXWw6r+dJ4JmLqQa6JNBEK2/M5C+xn3y2Ku3qcR8OyDttW78z1WM4WqcqgZsyFPX8MJfR9zY1BOlU90ubMrmHHrnaTTqvA5DqWk3FwIGr005GJFTwFo6mxS8JNKKXE/6YabM/ndcabzDR84qaVG64dt1WtSYJvFF71b076gTVw1Fl9A7HavylcUa9mSZKok4gGBnCAdWgF3iw53PsMr8PJqZsed9dJqoMsPTCDoqm+KF4yNvTXY66hsmyEAz1h7P1VyNU+u9CBZhlTbbET3eNib0YKXW8SLT34EL88xQ6oFIh4QmEftet89isRLexH9lgxhPelcVXI9pSFd20jextIZyCuNkcQQKVTjanvWyE6dMwpkQIu+93VySxs9u5/UlIqWJIUZPKNspn9VzkHxrJwYqpUICLt0PwWeRxVySxk6pobspo62+eeqmUrlMURAapqT5zgVQNSZiV3AElRbfLyLbW2Ux6qRP83uVK+Woq4zXOBz6nRl/E2x8H/ciYKBmZJeOMNt7LQpZ3AuV5Kg2NzuVYHWwHgXCXvdNOEitQRnJP5XNIKgGZ+dzM2MD089mHciub+2iWz7ablospPyv13swy6Itz5aJnz99JH6kkZqmE71Vbd8Z1eqe0jXY+rL7tu7u2ylukWfhefebrrdXzr3ucM0sfOxMllQsthyj3avUCuyri8AlioqTZRe6l/8ZtfwofPoFM3Moz27v+ncDdXNCt0Oxith3fbDyo+JiC3V40u5htx7fxFP3HzsTt0H7/7eVnion9pmx+ppjYj/4fPuPMTK9Uz50AAAAASUVORK5CYII=" id="image784f342339" transform="matrix(5.693878 0 0 2.8 619.705464 7.2)" style="image-rendering:crisp-edges;image-rendering:pixelated" width="49" height="99"/> - - + + - + - + - + - + @@ -1044,14 +1119,14 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAWqklEQVR4nN2ba5Bd2XXXf2vvc85939sP - + - + - + - + @@ -1059,23 +1134,23 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAWqklEQVR4nN2ba5Bd2XXXf2vvc85939sP - + - + - + - + - + - + @@ -1083,79 +1158,93 @@ iVBORw0KGgoAAAANSUhEUgAAADEAAABjCAYAAAAy2ujgAAAWqklEQVR4nN2ba5Bd2XXXf2vvc85939sP - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + + + + + + + + + + + + + + + - + - - - - - + - + - +iVBORw0KGgoAAAANSUhEUgAAABQAAAGBCAYAAABmVZFJAAAB/klEQVR4nO2cgW0DMQwD7f+M1hG6/yhNh9AJIEFqAKL3pGh/GuT+3N/vAedz7kPqHVbtnPO5z2UFizweHvnwyKzghsuspgHySUSGg327y9NZQIb/QnxTHJATXc5Dbn1Nx8JleeQ8l798faF6DTYwPDIdm41dpgX1kevyXFAemW9sVs8i2HmH1DfPZf1gB96+AuuLXj2LQwoW1HcZf3l0aGxY0AG5Lk8FHZDr8lTQ4Y4NCzq43JvDcIo8nyIDgg7IfdebCuojRx6jsGCRx2OArL/LgfWFfnf6WCB3l+eCgcj6wQ6srwZ7LhiIrB/svF3Wf4YN9nwCg52IfC77YtFdnk+DPZ8Nl9lN0XfZ4OYQeceGGztyl1nBujyfjUNKvbHxYMP/yWywgVmorxMY7CIPxwKZFTSoL32XaVMMkAN3GSa2QOZ3GdVbQH4S66suTwX1XX7gK3Fdnk+R58Mj05ti0Nj0M3RwORBZPth1WU/Q4CpigHz/aEF55Lo8Fnz1kXmX2Wdo0NivwbkcV18Oq5dnSiAyvnrybcMjy58p9BFQ5Pm0vubDI9PlYHAldkCOe/FZ2GV1lxd2Wd3lhWDHuRx44TR4o08MdtwHknxj6wc779O5hWCjehbIqNzOIUULwl/i3DikYMFX/mczH9gUC5dpZAOXWU38GW7UF47MCuLI/3eYjgRi4GjtAAAAAElFTkSuQmCC" id="imageb420c77896" transform="scale(1 -1) translate(0 -277.2)" x="535.68" y="-6.48" width="14.4" height="277.2"/> - - + + - - + - + - + @@ -1313,15 +1402,45 @@ L 3.5 0 - - + + - + - + - + + + + @@ -1331,15 +1450,15 @@ L 3.5 0 - - + + - + - + - + @@ -1349,15 +1468,15 @@ L 3.5 0 - - + + - + - + - + @@ -1367,15 +1486,15 @@ L 3.5 0 - - + + - + - + - + @@ -1385,15 +1504,15 @@ L 3.5 0 - - + + - + - + - + @@ -1403,15 +1522,15 @@ L 3.5 0 - - + + - + - + - + - - - + + - - + + - - + + diff --git a/dev/fitting/figures/sigma_distribution.svg b/dev/fitting/figures/sigma_distribution.svg index e61ab6e..fe36810 100644 --- a/dev/fitting/figures/sigma_distribution.svg +++ b/dev/fitting/figures/sigma_distribution.svg @@ -6,7 +6,7 @@ - 2025-01-25T15:07:38.007608 + 2025-01-25T17:51:16.271465 image/svg+xml @@ -40,213 +40,213 @@ z +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#p1a96b13404)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> - - + @@ -293,7 +293,7 @@ z - + @@ -329,7 +329,7 @@ z - + @@ -751,12 +751,12 @@ z - - + @@ -780,12 +780,12 @@ z - + - + - + - + @@ -830,12 +830,12 @@ z - + - + - + - + - + - + - + - + - @@ -1280,10 +1258,10 @@ z - - + + - + + - + - - + + @@ -1423,7 +1424,7 @@ z - + diff --git a/dev/fitting/figures/template_compare.svg b/dev/fitting/figures/template_compare.svg index d51c30f..8338c53 100644 --- a/dev/fitting/figures/template_compare.svg +++ b/dev/fitting/figures/template_compare.svg @@ -6,7 +6,7 @@ - 2025-01-25T15:07:30.517943 + 2025-01-25T17:51:08.675002 image/svg+xml @@ -38,10 +38,10 @@ z " style="fill: #ffffff"/> +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" id="imagea7688f49b2" transform="scale(1 -1) translate(0 -264.96)" x="64.08" y="-25.2" width="232.56" height="264.96"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + @@ -319,7 +319,7 @@ z - + @@ -364,7 +364,7 @@ z - + @@ -517,12 +517,12 @@ z - - + @@ -560,7 +560,7 @@ z - + @@ -574,7 +574,7 @@ z - + @@ -616,7 +616,7 @@ z - + @@ -655,7 +655,7 @@ z - + @@ -699,7 +699,7 @@ z - + @@ -1298,225 +1298,225 @@ z " style="fill: #ffffff"/> +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" id="image85d3f7f95d" transform="scale(1 -1) translate(0 -264.96)" x="318.24" y="-24.48" width="236.16" height="264.96"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -1531,7 +1531,7 @@ iVBORw0KGgoAAAANSUhEUgAAAVIAAAFwCAYAAADqsfPSAAAvSklEQVR4nO2d27NU1bWHp1EJqKAougVB - + @@ -1546,7 +1546,7 @@ iVBORw0KGgoAAAANSUhEUgAAAVIAAAFwCAYAAADqsfPSAAAvSklEQVR4nO2d27NU1bWHp1EJqKAougVB - + @@ -1579,42 +1579,42 @@ iVBORw0KGgoAAAANSUhEUgAAAVIAAAFwCAYAAADqsfPSAAAvSklEQVR4nO2d27NU1bWHp1EJqKAougVB - + - + - + - + - + - + @@ -1807,225 +1807,225 @@ z " style="fill: #ffffff"/> +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" id="imagedac3b6585c" transform="scale(1 -1) translate(0 -266.4)" x="561.6" y="-23.04" width="257.04" height="266.4"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -2040,7 +2040,7 @@ iVBORw0KGgoAAAANSUhEUgAAAWUAAAFyCAYAAAAtVsuYAAAglUlEQVR4nO3d2Y8VVffG8c08yDwLEkBR - + @@ -2055,7 +2055,7 @@ iVBORw0KGgoAAAANSUhEUgAAAWUAAAFyCAYAAAAtVsuYAAAglUlEQVR4nO3d2Y8VVffG8c08yDwLEkBR - + @@ -2088,42 +2088,42 @@ iVBORw0KGgoAAAANSUhEUgAAAWUAAAFyCAYAAAAtVsuYAAAglUlEQVR4nO3d2Y8VVffG8c08yDwLEkBR - + - + - + - + - + - + @@ -2260,12 +2260,12 @@ z " style="fill: #ffffff"/> +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" id="imagee343c412c1" transform="scale(1 -1) translate(0 -264.96)" x="897.84" y="-24.48" width="213.84" height="264.96"/> - + @@ -2280,7 +2280,7 @@ iVBORw0KGgoAAAANSUhEUgAAATIAAAFwCAYAAAA7VveiAABRaklEQVR4nO2dZXhU5/b2VzwhNhGIKwkh - + @@ -2295,7 +2295,7 @@ iVBORw0KGgoAAAANSUhEUgAAATIAAAFwCAYAAAA7VveiAABRaklEQVR4nO2dZXhU5/b2VzwhNhGIKwkh - + @@ -2328,42 +2328,42 @@ iVBORw0KGgoAAAANSUhEUgAAATIAAAFwCAYAAAA7VveiAABRaklEQVR4nO2dZXhU5/b2VzwhNhGIKwkh - + - + - + - + - + - + @@ -2483,18 +2483,18 @@ z " style="fill: #ffffff"/> +iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAABWElEQVR4nO3Yiw0CMRAD0YDov+QLNRit5BE7LsDal88F8br33jOU91TReNlnUCmzXSYzj8xymcw8Mv+pbMmaycwjs1wmM4/MchmXyZ2My3TN8nAn4zK5a7ZkMi6Tu2bcybhM7ppxJ+MyXbM83Mm4TO6aLZmMy+Sumcxy2ZIbwJ1MZh6ZebiTcZncNZNZLuMyvZt5ZOaRmWfJ3Zyd7HmeuTIuc8l1cje7ZWDm5NEAM93NOGDmkt3kMn1QumXuZp4tu+mD0i0DM93NODLzyCyXgZl+guLIzCOzXAZm+gmKIzOPzHKZzDz+F1Quk5lHZrlMZh6Z5TKZeWSWy2Tm2cL0p3u3TGYemT+ULfkDU2YcMJN7N5e8m0uY3s28bAmTe2iX3E2ZeRmX6ScoL9vB5E62ZAO27CaX6RvQLZOZx0NbLpOZx0NbLpOZx0NbLpOZx0Ob53XOGWsbZX4BVQam4NEPKDEAAAAASUVORK5CYII=" id="image7e00ef5b27" transform="scale(1 -1) translate(0 -277.2)" x="822.24" y="-12.24" width="13.68" height="277.2"/> - - + @@ -2509,7 +2509,7 @@ L 3.5 0 - + @@ -2524,110 +2524,110 @@ L 3.5 0 - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2655,13 +2655,13 @@ z " style="fill: #ffffff"/> +iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhNZ1BwwB9AagCiF1K0kxbdn/19FjT32ofSWpzSWuveZ3NixRwPi7lYTE6MdpPTE2OuFEwwtLu7OR0YE/zJ0A0wY6a4mYHZCpqO2k0tZoabD1tBmFZD+2JYTDIa9G6SYl7MujkX02KyTctpqUObcaA8GW56QxtyCwqpIHKd1AcKKOZ1E30RMzctKGbGrJtTMTNm3ZyKme+0oJjZzYZ2KlbM8RRzPjSm9epeN38r1hex+RTzhZgXsxU0HjhnpJgXszmbi4VgekPbM2AuFhLaEExvaDN20/vMGtr5hIQ2BXNt7vLe3ZxPQzsf2k1uA7xuik/0mDst2LQxu8mJ1c350AeKtWnR0IK/qmtoXwxcQSsktMUcjhqTExNXkNdN0gAxZshugpRqTHY3MS0Y86RUUN2cinndPOA1tG7Op5jzYTHJDRA3LfnMzG6GYGpDWzd/Kya+Hogx9x8ppsWsm2Oxy4vJusk9M3HTXuJzM6KCyHW6zwoJbQamt4LIphVjoudmRtPGYHpDG9G0ZGuIvx7AmF43tQaAz0z8UoFiet0kN0B8cWFDm1GO4otLSmgjPsaxTesNbcZXKji0mJYaE5PiDxRSDPyjPfpAAcUu7X/MOqABajdJTLGbnB76zOgKQjE5MRTzH6nyjgS9xeYCAAAAAElFTkSuQmCC" id="imagee1f404a087" transform="scale(1 -1) translate(0 -277.2)" x="1122.48" y="-12.24" width="13.68" height="277.2"/> - + @@ -2677,7 +2677,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2693,7 +2693,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2709,7 +2709,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2725,7 +2725,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2740,7 +2740,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2755,7 +2755,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2770,7 +2770,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2785,7 +2785,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2813,13 +2813,13 @@ z - + - + - + diff --git a/dev/fitting/fitting_intro/index.html b/dev/fitting/fitting_intro/index.html index c42b5b7..2a12123 100644 --- a/dev/fitting/fitting_intro/index.html +++ b/dev/fitting/fitting_intro/index.html @@ -18,7 +18,7 @@ ylim=nothing, nbins=nothing, xwidth=nothing, - ywidth=nothing)

Main function for generating template Hess diagrams from a simple stellar population of stars from an isochrone, including photometric error and completeness.

Arguments

Keyword Arguments

Returns

This method returns the Hess diagram as a StatsBase.Histogram; you should refer to the StatsBase documentation for more information. In short, if the output of this method is result, then the Hess diagram represented as a Matrix is available as result.weights (this is what you would want for fit_templates and similar functions) and the edges of the histogram are available as result.edges.

source

The user-provided functions returning magnitude errors (mag_err_funcs) and completeness values (completness_functions) given a star's intrinsic apparent magnitude are important for deriving good templates. These are typically derived from catalogs of artificial star tests. Some helper functions for constructing these are provided here.

We note that in many cases it can also be helpful to add in a foreground/background template that models contamination of the Hess diagram from stars not in your population of interest – this is often done using observations of parallel fields though there are several other possible methods.

Photometric catalogs can be processed into Hess diagrams meeting our formatting requirements with the method bin_cmd.

StarFormationHistories.bin_cmdFunction
result::StatsBase.Histogram =
+                       ywidth=nothing)

Main function for generating template Hess diagrams from a simple stellar population of stars from an isochrone, including photometric error and completeness.

Arguments

  • m_ini::AbstractVector{<:Number} is a vector containing the initial stellar masses of the stars from the isochrone.
  • mags::AbstractVector{<:AbstractVector{<:Number}} is a vector of vectors. Each constituent vector with index i should have length(mags[i]) == length(m_ini), representing the magnitudes of the isochrone stars in each of the magnitudes considered. In most cases, mags should contain 2 (if y-axis mag is also involved in the x-axis color) or 3 vectors.
  • mag_err_funcs must be an indexable object (e.g., a Vector or Tuple) that contains callables (e.g., a Function) to compute the 1σ photometric errors for the same filters provided in mags. Each callable must take a single argument (an apparent magnitude) and return a Number. The length mag_err_funcs must be equal to the length of mags.
  • y_index gives a valid index (e.g., an Int or CartesianIndex) into mags for the filter you want to have on the y-axis of the Hess diagram. For example, if the mags argument contains the B and V band magnitudes as mags=[B, V] and you want V on the y-axis, you would set y_index as 2.
  • color_indices is a length-2 indexable object giving the indices into mags that are to be used to compute the x-axis color. For example, if the mags argument contains the B and V band magnitudes as mags=[B, V], and you want B-V to be the x-axis color, then color_indices should be [1,2] or (1,2) or similar.
  • imf is a callable that takes an initial stellar mass as its sole argument and returns the (properly normalized) probability density of your initial mass function model. All the models from InitialMassFunctions.jl are valid for imf.
  • completeness_functions must be an indexable object (e.g., a Vector or Tuple) that contains callables (e.g., a Function) to compute the single-filter completeness fractions as a function of apparent magnitude. Each callable in this argument must correspond to the matching filter provided in mags.

Keyword Arguments

  • dmod::Number=0 is the distance modulus in magnitudes to apply to the input mags. Leave at 0 if you are providing apparent magnitudes in mags.
  • normalize_value::Number=1 is the total stellar mass of the population you wish to model.
  • binary_model::AbstractBinaryModel=NoBinaries() is the model to use for including binary systems. Currently only StarFormationHistories.NoBinaries and StarFormationHistories.RandomBinaryPairs are supported.
  • mean_mass::Number is the expectation value of the initial mass for a random star drawn from your provided imf. This will be computed for you if your provided imf is a valid continuous, univariate Distributions.Distribution object.
  • edges is a tuple of ranges defining the left-side edges of the bins along the x-axis (edges[1]) and the y-axis (edges[2]). Example: (-1.0:0.1:1.5, 22:0.1:27.2). If edges is provided, it overrides the following keyword arguments that offer other ways to specify the extent of the Hess diagram.
  • xlim is a length-2 indexable object (e.g., a Vector or Tuple) giving the lower and upper bounds on the x-axis corresponding to the provided colors array. Example: (-1.0, 1.5). This is only used if edges is not provided.
  • ylim is as xlim but for the y-axis corresponding to the provided mags array. Example (25.0, 20.0). This is only used if edges is not provided.
  • nbins::NTuple{2, <:Integer} is a 2-tuple of integers providing the number of bins to use along the x- and y-axes. This is only used if edges is not provided.
  • xwidth is the bin width along the x-axis for the colors array. This is only used if edges and nbins are not provided. Example: 0.1.
  • ywidth is as xwidth but for the y-axis corresponding to the provided mags array. Example: 0.1.

Returns

This method returns the Hess diagram as a StatsBase.Histogram; you should refer to the StatsBase documentation for more information. In short, if the output of this method is result, then the Hess diagram represented as a Matrix is available as result.weights (this is what you would want for fit_templates and similar functions) and the edges of the histogram are available as result.edges.

source

The user-provided functions returning magnitude errors (mag_err_funcs) and completeness values (completness_functions) given a star's intrinsic apparent magnitude are important for deriving good templates. These are typically derived from catalogs of artificial star tests. Some helper functions for constructing these are provided here.

We note that in many cases it can also be helpful to add in a foreground/background template that models contamination of the Hess diagram from stars not in your population of interest – this is often done using observations of parallel fields though there are several other possible methods.

Photometric catalogs can be processed into Hess diagrams meeting our formatting requirements with the method bin_cmd.

StarFormationHistories.bin_cmdFunction
result::StatsBase.Histogram =
    bin_cmd(colors::AbstractVector{<:Number},
            mags::AbstractVector{<:Number};
            weights::AbstractVector{<:Number} = ones(promote_type(eltype(colors),
@@ -28,6 +28,6 @@
            ylim   = extrema(mags),
            nbins  = nothing,
            xwidth = nothing,
-           ywidth = nothing)

Returns a StatsBase.Histogram type containing the Hess diagram from the provided x-axis photometric colors and y-axis photometric magnitudes mags. These must all be vectors equal in length. You can either specify the bin edges directly via the edges keyword (e.g., edges = (range(-0.5, 1.6, length=100), range(17.0, 26.0, length=100))), or you can set the x- and y-limits via xlim and ylim and the number of bins as nbins, or you can omit nbins and instead pass the bin width in the x and y directions, xwidth and ywidth. See below for more info on the keyword arguments. To plot this with PyPlot.jl you should do PyPlot.imshow(permutedims(result.weights), origin="lower", extent=(extrema(result.edges[1])..., extrema(result.edges[2]), kws...) where kws... are any other keyword arguments you wish to pass to PyPlot.imshow.

Keyword Arguments

  • weights::AbstractVector{<:Number} is a array of length equal to colors and mags that contains the probabilistic weights associated with each point. This is passed to StatsBase.fit as StatsBase.Weights(weights). The following keyword arguments are passed to StarFormationHistories.calculate_edges to determine the bin edges of the histogram.
  • edges is a tuple of ranges defining the left-side edges of the bins along the x-axis (edges[1]) and the y-axis (edges[2]). Example: (-1.0:0.1:1.5, 22:0.1:27.2). If edges is provided, weights is the only other keyword that will be read; edges supercedes the other construction methods.
  • xlim is a length-2 indexable object (e.g., a vector or tuple) giving the lower and upper bounds on the x-axis corresponding to the provided colors array. Example: [-1.0, 1.5]. This is only used if edges is not provided.
  • ylim is like xlim but for the y-axis corresponding to the provided mags array. Example [25.0, 20.0]. This is only used if edges is not provided.
  • nbins::NTuple{2, <:Integer} is a 2-tuple of integers providing the number of bins to use along the x- and y-axes. This is only used if edges is not provided.
  • xwidth is the bin width along the x-axis for the colors array. This is only used if edges and nbins are not provided. Example: 0.1.
  • ywidth is like xwidth but for the y-axis corresponding to the provided mags array. Example: 0.1.
source

A Note on Array Formatting

It is expected that the user will typically have model templates stored as two-dimensional matrices as these are the obvious choice for representing a binned two-dimensional histogram. We fully support supplying the list of model templates as a list of matrices (e.g., a Vector{Matrix{<:Number}}) to the fitting functions discussed below. The important computational kernels composite! and ∇loglikelihood! have custom loops for these input types.

However, additional optimizations are possible by flattening the data. By flattening each matrix in the list of model templates into a column vector and concatenating them such that the list of model templates becomes a single matrix, we can compute the complex model Hess diagram as a single matrix-vector product rather than using a custom loop. The same optimization can be made when computing the gradient of the loglikelihood (discussed more below). The majority of all computation for the fitting methods below is spent in these two functions, so optimizing their performance translates directly to improved fitting runtimes. With this flattened memory arrangement we can use the highly optimized LinearAlgbera.mul! method to do the in-place matrix-vector product. This will typically be translated into a call to a BLAS function like gemv!. As such, we can benefit from Julia's ability to switch BLAS implementations at runtime to use Intel's Math Kernel Library, Apple's Accelerate, and others.

Most of the fitting methods below support both the natural and flattened data layouts. We provide the stack_models method to produce the optimized layout for the list of model templates.

StarFormationHistories.stack_modelsFunction
stack_models(models::AbstractVector{<:AbstractMatrix{<:Number}})

Transforms a vector of matrices into a single matrix, with each matrix from models being transcribed into a single column in the output matrix. This data layout enables more efficient calculations in some of our internal functions like composite! and ∇loglikelihood!. This function is just reduce(hcat, map(vec, models)).

Examples

julia> stack_models([rand(5,5) for i in 1:10])
+           ywidth = nothing)

Returns a StatsBase.Histogram type containing the Hess diagram from the provided x-axis photometric colors and y-axis photometric magnitudes mags. These must all be vectors equal in length. You can either specify the bin edges directly via the edges keyword (e.g., edges = (range(-0.5, 1.6, length=100), range(17.0, 26.0, length=100))), or you can set the x- and y-limits via xlim and ylim and the number of bins as nbins, or you can omit nbins and instead pass the bin width in the x and y directions, xwidth and ywidth. See below for more info on the keyword arguments. To plot this with PyPlot.jl you should do PyPlot.imshow(permutedims(result.weights), origin="lower", extent=(extrema(result.edges[1])..., extrema(result.edges[2]), kws...) where kws... are any other keyword arguments you wish to pass to PyPlot.imshow.

Keyword Arguments

  • weights::AbstractVector{<:Number} is a array of length equal to colors and mags that contains the probabilistic weights associated with each point. This is passed to StatsBase.fit as StatsBase.Weights(weights). The following keyword arguments are passed to StarFormationHistories.calculate_edges to determine the bin edges of the histogram.
  • edges is a tuple of ranges defining the left-side edges of the bins along the x-axis (edges[1]) and the y-axis (edges[2]). Example: (-1.0:0.1:1.5, 22:0.1:27.2). If edges is provided, weights is the only other keyword that will be read; edges supercedes the other construction methods.
  • xlim is a length-2 indexable object (e.g., a vector or tuple) giving the lower and upper bounds on the x-axis corresponding to the provided colors array. Example: [-1.0, 1.5]. This is only used if edges is not provided.
  • ylim is like xlim but for the y-axis corresponding to the provided mags array. Example [25.0, 20.0]. This is only used if edges is not provided.
  • nbins::NTuple{2, <:Integer} is a 2-tuple of integers providing the number of bins to use along the x- and y-axes. This is only used if edges is not provided.
  • xwidth is the bin width along the x-axis for the colors array. This is only used if edges and nbins are not provided. Example: 0.1.
  • ywidth is like xwidth but for the y-axis corresponding to the provided mags array. Example: 0.1.
source

A Note on Array Formatting

It is expected that the user will typically have model templates stored as two-dimensional matrices as these are the obvious choice for representing a binned two-dimensional histogram. We fully support supplying the list of model templates as a list of matrices (e.g., a Vector{Matrix{<:Number}}) to the fitting functions discussed below. The important computational kernels composite! and ∇loglikelihood! have custom loops for these input types.

However, additional optimizations are possible by flattening the data. By flattening each matrix in the list of model templates into a column vector and concatenating them such that the list of model templates becomes a single matrix, we can compute the complex model Hess diagram as a single matrix-vector product rather than using a custom loop. The same optimization can be made when computing the gradient of the loglikelihood (discussed more below). The majority of all computation for the fitting methods below is spent in these two functions, so optimizing their performance translates directly to improved fitting runtimes. With this flattened memory arrangement we can use the highly optimized LinearAlgbera.mul! method to do the in-place matrix-vector product. This will typically be translated into a call to a BLAS function like gemv!. As such, we can benefit from Julia's ability to switch BLAS implementations at runtime to use Intel's Math Kernel Library, Apple's Accelerate, and others.

Most of the fitting methods below support both the natural and flattened data layouts. We provide the stack_models method to produce the optimized layout for the list of model templates.

StarFormationHistories.stack_modelsFunction
stack_models(models::AbstractVector{<:AbstractMatrix{<:Number}})

Transforms a vector of matrices into a single matrix, with each matrix from models being transcribed into a single column in the output matrix. This data layout enables more efficient calculations in some of our internal functions like composite! and ∇loglikelihood!. This function is just reduce(hcat, map(vec, models)).

Examples

julia> stack_models([rand(5,5) for i in 1:10])
 25×10 Matrix{Float64}:
-...
source

A Note on Threading

While generally the methods using BLAS routines offer significant performance improvements, there is a caveat when multithreading from within Julia. By default Julia will allow BLAS to use multiple threads even if Julia itself is started with a single thread (i.e., by running julia -t 1). BLAS threads do not compose with Julia threads. That is, if you start Julia with N>1 threads (julia -t N) and write a threaded workload where each Julia thread is doing BLAS operations concurrently, you can easily oversubscribe the CPU. Specific recommendations vary depending on BLAS vendor (see this page and the linked discourse threads), but generally this package is in the regime of doing many small calculations that do not individually benefit much from BLAS threading (e.g., performance for OpenBLAS with 8 threads is only ~2x the 1 thread performance). As such it is often sufficient to set BLAS to use a single thread (via LinearAlgbera.BLAS.set_num_threads(1) or environment variables; see above link).

+...source

A Note on Threading

While generally the methods using BLAS routines offer significant performance improvements, there is a caveat when multithreading from within Julia. By default Julia will allow BLAS to use multiple threads even if Julia itself is started with a single thread (i.e., by running julia -t 1). BLAS threads do not compose with Julia threads. That is, if you start Julia with N>1 threads (julia -t N) and write a threaded workload where each Julia thread is doing BLAS operations concurrently, you can easily oversubscribe the CPU. Specific recommendations vary depending on BLAS vendor (see this page and the linked discourse threads), but generally this package is in the regime of doing many small calculations that do not individually benefit much from BLAS threading (e.g., performance for OpenBLAS with 8 threads is only ~2x the 1 thread performance). As such it is often sufficient to set BLAS to use a single thread (via LinearAlgbera.BLAS.set_num_threads(1) or environment variables; see above link).

diff --git a/dev/fitting/hierarchical/MZR/MZR/index.html b/dev/fitting/hierarchical/MZR/MZR/index.html index 553579a..7334783 100644 --- a/dev/fitting/hierarchical/MZR/MZR/index.html +++ b/dev/fitting/hierarchical/MZR/MZR/index.html @@ -29,7 +29,7 @@ true julia> free_params(PowerLawMZR(1.0, -1, 7, (true, false))) == (true, false) -truesource

The per-SSP stellar mass coefficients ($r_{j,k}$ in the derivation) can be derived from an MZR model, a metallicity dispersion model, the per-unique-log(age) stellar mass coefficients ($R_j$ in the derivation), and the set of SSP logarithmic ages logAge = log10(age [yr]) and metallicites using calculate_coeffs.

Mass-Metallicity Relation API

Below we describe the API that must be followed in order to implement new types for describing a mass-metallicity relation, such that they will work with our provided fitting and sampling methods.

StarFormationHistories.AbstractMZRType

AbstractMZR{T <: Real} <: AbstractMetallicityModel{T}: abstract supertype for all metallicity models that are mass-metallicity relations. Concrete subtypes T <: AbstractMZR should implement the following API:

  • (model::T)(Mstar::Real) should be defined so that the struct is callable with a stellar mass Mstar in solar masses, returning the mean metallicity given the MZR model. This is $\mu_j \left( \text{M}_* \right)$ in the derivations presented in the documentation.
  • nparams(model::T) should return the number of fittable parameters in the model.
  • fittable_params(model::T) should return the values of the fittable parameters in the model.
  • gradient(model::T, Mstar::Real) should return a tuple that contains the partial derivative of the mean metallicity $\mu_j$ with respect to each fittable model parameter, plus the partial derivative with respect to the stellar mass Mstar as the final element.
  • update_params(model::T, newparams) should return a new instance of T with the fittable parameters contained in newparams (which is typically a vector or tuple) and non-fittable parameters inherited from the provided model.
  • transforms(model::T) should return a tuple of length nparams(model) which indicates how the fittable variables should be transformed for optimization, if at all. Elements should be 1 for parameters that are constrained to always be positive, 0 for parameters that can be positive or negative, and -1 for parameters that are constrained to always be negative.
  • free_params(model::T) should return an NTuple{nparams(model), Bool} that is true for fittable parameters that you want to optimize and false for fittable parameters that you want to stay fixed during optimization.
source
StarFormationHistories.nparamsMethod
nparams(model::AbstractMZR)::Int

Returns the number of fittable parameters in the model.

source
StarFormationHistories.fittable_paramsMethod
fittable_params(model::AbstractMZR{T})::NTuple{nparams(model), T}

Returns the values of the fittable parameters in the provided MZR model.

source
StarFormationHistories.gradientMethod
gradient(model::AbstractMZR{T}, Mstar::Real)::NTuple{nparams(model)+1, T}

Returns a tuple containing the partial derivative of the mean metallicity with respect to all fittable parameters, plus the partial derivative with respect to the stellar mass Mstar as the final element. These partial derivatives are evaluated at stellar mass Mstar.

source
StarFormationHistories.update_paramsMethod
update_params(model::T, newparams)::T where {T <: AbstractMZR}

Returns a new instance of the model type T with the fittable parameters contained in newparams (which is typically a vector or tuple), with non-fittable parameters inherited from the provided model.

source
StarFormationHistories.transformsMethod
transforms(model::AbstractMZR)::NTuple{nparams(model), Int}

Returns a tuple of length nparams(model) which indicates how the fittable variables should be transformed for optimization, if at all. Elements should be 1 for parameters that are constrained to always be positive, 0 for parameters that can be positive or negative, and -1 for parameters that are constrained to always be negative.

source
StarFormationHistories.free_paramsMethod
free_params(model::AbstractMZR)::NTuple{nparams(model), Bool}

Returns an tuple of length nparams(model) that is true for fittable parameters that you want to optimize and false for fittable parameters that you want to stay fixed during optimization.

source

Fitting and Sampling Methods

The MZRs listed above support the generic fitting and sampling methods listed in the overview.

Derivation

We once again wish to derive the gradient of the objective function with respect to the fitting parameters to enable gradient-based optimization. Our derivation will reuse some of the notation developed in the section on the linear AMR. The main difference is that instead of expressing the mean metallicity as a function of time $\langle [\text{M}/\text{H}] \rangle (t)$, with an MZR we express the mean metallicity as a function of stellar mass at that time $\langle [\text{M}/\text{H}] \rangle (\text{M}_*(t))$. This means that the partial derivatives of the objective with respect to the stellar mass coefficients have a more complex form than in the AMR case, as changing the stellar mass formed 10 Gyr ago (for example) would change the total stellar mass at all more recent times, which in turn changes the mean metallicity expected at all more recent times.

In the derivations for AMRs we were agnostic about the choice of template normalization; templates could either be normalized to have units of expected number of stars per solar mass of stars formed $[N / \text{M}_\odot]$, or expected number of stars per unit star formation rate $[N / \dot{\text{M}}_\odot]$. Changing the units of the templates would, in turn, change the units of the fitting variables returned by the fitting routines, but as shown in our example Jupyter notebook, the fit results are the same no matter the choice of fitting units. For an MZR, we must know the units of the templates and fitting variables so that we may properly calculate the total cumulative stellar mass as a function of time. For simplicity, we assume templates are normalized to number of stars per solar mass of stars formed $[N / \text{M}_\odot]$ and that the fitting variables are therefore the total stellar mass ascribed to each time bin – this is the default behavior for the template creation routines.

Borrowing notation from the fitting introduction and the section on linear AMRs, the bin $m_i$ of the complex model Hess diagram can be written as the sum over the grid of templates with ages indexed by $j$ and metallicities indexed by $k$ as

\[m_i = \sum_{j,k} \, r_{j,k} \; c_{i,j,k}\]

where $m_i$ is the value of the complex model in bin $i$, $c_{i,j,k}$ is the value of the SSP template with age $j$ and metallicity $k$ in bin $i$, and $r_{j,k}$ is the multiplicative coefficient determining how significant the template is to the complex population.

The gradient of the objective with respect to the $r_{j,k}$ is given by Equation 21 in Dolphin 2001 as shown in the section on linear AMRs,

\[\begin{aligned} +truesource

The per-SSP stellar mass coefficients ($r_{j,k}$ in the derivation) can be derived from an MZR model, a metallicity dispersion model, the per-unique-log(age) stellar mass coefficients ($R_j$ in the derivation), and the set of SSP logarithmic ages logAge = log10(age [yr]) and metallicites using calculate_coeffs.

Mass-Metallicity Relation API

Below we describe the API that must be followed in order to implement new types for describing a mass-metallicity relation, such that they will work with our provided fitting and sampling methods.

StarFormationHistories.AbstractMZRType

AbstractMZR{T <: Real} <: AbstractMetallicityModel{T}: abstract supertype for all metallicity models that are mass-metallicity relations. Concrete subtypes T <: AbstractMZR should implement the following API:

  • (model::T)(Mstar::Real) should be defined so that the struct is callable with a stellar mass Mstar in solar masses, returning the mean metallicity given the MZR model. This is $\mu_j \left( \text{M}_* \right)$ in the derivations presented in the documentation.
  • nparams(model::T) should return the number of fittable parameters in the model.
  • fittable_params(model::T) should return the values of the fittable parameters in the model.
  • gradient(model::T, Mstar::Real) should return a tuple that contains the partial derivative of the mean metallicity $\mu_j$ with respect to each fittable model parameter, plus the partial derivative with respect to the stellar mass Mstar as the final element.
  • update_params(model::T, newparams) should return a new instance of T with the fittable parameters contained in newparams (which is typically a vector or tuple) and non-fittable parameters inherited from the provided model.
  • transforms(model::T) should return a tuple of length nparams(model) which indicates how the fittable variables should be transformed for optimization, if at all. Elements should be 1 for parameters that are constrained to always be positive, 0 for parameters that can be positive or negative, and -1 for parameters that are constrained to always be negative.
  • free_params(model::T) should return an NTuple{nparams(model), Bool} that is true for fittable parameters that you want to optimize and false for fittable parameters that you want to stay fixed during optimization.
source
StarFormationHistories.nparamsMethod
nparams(model::AbstractMZR)::Int

Returns the number of fittable parameters in the model.

source
StarFormationHistories.fittable_paramsMethod
fittable_params(model::AbstractMZR{T})::NTuple{nparams(model), T}

Returns the values of the fittable parameters in the provided MZR model.

source
StarFormationHistories.gradientMethod
gradient(model::AbstractMZR{T}, Mstar::Real)::NTuple{nparams(model)+1, T}

Returns a tuple containing the partial derivative of the mean metallicity with respect to all fittable parameters, plus the partial derivative with respect to the stellar mass Mstar as the final element. These partial derivatives are evaluated at stellar mass Mstar.

source
StarFormationHistories.update_paramsMethod
update_params(model::T, newparams)::T where {T <: AbstractMZR}

Returns a new instance of the model type T with the fittable parameters contained in newparams (which is typically a vector or tuple), with non-fittable parameters inherited from the provided model.

source
StarFormationHistories.transformsMethod
transforms(model::AbstractMZR)::NTuple{nparams(model), Int}

Returns a tuple of length nparams(model) which indicates how the fittable variables should be transformed for optimization, if at all. Elements should be 1 for parameters that are constrained to always be positive, 0 for parameters that can be positive or negative, and -1 for parameters that are constrained to always be negative.

source
StarFormationHistories.free_paramsMethod
free_params(model::AbstractMZR)::NTuple{nparams(model), Bool}

Returns an tuple of length nparams(model) that is true for fittable parameters that you want to optimize and false for fittable parameters that you want to stay fixed during optimization.

source

Fitting and Sampling Methods

The MZRs listed above support the generic fitting and sampling methods listed in the overview.

Derivation

We once again wish to derive the gradient of the objective function with respect to the fitting parameters to enable gradient-based optimization. Our derivation will reuse some of the notation developed in the section on the linear AMR. The main difference is that instead of expressing the mean metallicity as a function of time $\langle [\text{M}/\text{H}] \rangle (t)$, with an MZR we express the mean metallicity as a function of stellar mass at that time $\langle [\text{M}/\text{H}] \rangle (\text{M}_*(t))$. This means that the partial derivatives of the objective with respect to the stellar mass coefficients have a more complex form than in the AMR case, as changing the stellar mass formed 10 Gyr ago (for example) would change the total stellar mass at all more recent times, which in turn changes the mean metallicity expected at all more recent times.

In the derivations for AMRs we were agnostic about the choice of template normalization; templates could either be normalized to have units of expected number of stars per solar mass of stars formed $[N / \text{M}_\odot]$, or expected number of stars per unit star formation rate $[N / \dot{\text{M}}_\odot]$. Changing the units of the templates would, in turn, change the units of the fitting variables returned by the fitting routines, but as shown in our example Jupyter notebook, the fit results are the same no matter the choice of fitting units. For an MZR, we must know the units of the templates and fitting variables so that we may properly calculate the total cumulative stellar mass as a function of time. For simplicity, we assume templates are normalized to number of stars per solar mass of stars formed $[N / \text{M}_\odot]$ and that the fitting variables are therefore the total stellar mass ascribed to each time bin – this is the default behavior for the template creation routines.

Borrowing notation from the fitting introduction and the section on linear AMRs, the bin $m_i$ of the complex model Hess diagram can be written as the sum over the grid of templates with ages indexed by $j$ and metallicities indexed by $k$ as

\[m_i = \sum_{j,k} \, r_{j,k} \; c_{i,j,k}\]

where $m_i$ is the value of the complex model in bin $i$, $c_{i,j,k}$ is the value of the SSP template with age $j$ and metallicity $k$ in bin $i$, and $r_{j,k}$ is the multiplicative coefficient determining how significant the template is to the complex population.

The gradient of the objective with respect to the $r_{j,k}$ is given by Equation 21 in Dolphin 2001 as shown in the section on linear AMRs,

\[\begin{aligned} F \equiv - \text{ln} \, \mathscr{L} &= \sum_i m_i - n_i \times \left( 1 - \text{ln} \, \left( \frac{n_i}{m_i} \right) \right) \\ \frac{\partial \, F}{\partial \, r_{j,k}} &= \sum_i c_{i,j,k} \left( 1 - \frac{n_i}{m_i} \right) \end{aligned}\]

where $n_i$ is bin $i$ of the observed Hess diagram. These partial derivatives are easy to obtain, but we need partials with respect to the total stellar mass formed at each distinct age, $R_j$. These are more complicated that the same partial derivatives under an AMR model.

For the purposes of illustration, we will consider a power law MZR with slope $\alpha$ as is typically used to describe the extrapolation of gas-phase MZRs to masses below $10^8 \text{M}_\odot$. Under this model, we can express the mean metallicity at time $j$, notated as $\mu_j$, as

\[\begin{aligned} @@ -105,4 +105,4 @@ \end{aligned}\]

Since $\frac{\partial \mu_j}{\partial P}$ has no dependence on the metallicity index $k$, we can pull it out of the sum in the final term and combine it into the prefactor as

\[\frac{\partial \, r_{j,k}}{\partial \, P} = \frac{R_j}{\sum_k \, A_{j,k}} \frac{\partial \mu_j}{\partial P} \left( \frac{\partial \, A_{j,k}}{\partial \, \mu_j} - \frac{A_{j,k}}{\sum_k \, A_{j,k}} \sum_k \frac{\partial \, A_{j,k}}{\partial \, \mu_j} \right)\]

so that we can reuse the majority of the calculation for all the parameters $P$ in the model for $\mu_j$, changing only a multiplicative prefactor of $\frac{\partial \mu_j}{\partial P}$. This means that the partial derivative of the objective with respect to $P$ becomes

\[\begin{aligned} \frac{\partial \, F}{\partial \, P} &= \sum_{j,k} \frac{\partial \, F}{\partial \, r_{j,k}} \, \frac{\partial \, r_{j,k}}{\partial \, P} \\ &= \sum_j \frac{R_j}{\sum_k \, A_{j,k}} \frac{\partial \mu_j}{\partial P} \sum_k \frac{\partial \, F}{\partial \, r_{j,k}} \, \left( \frac{\partial \, A_{j,k}}{\partial \, \mu_j} - \frac{A_{j,k}}{\sum_k \, A_{j,k}} \sum_k \frac{\partial \, A_{j,k}}{\partial \, \mu_j} \right) \\ -\end{aligned}\]

+\end{aligned}\]

diff --git a/dev/fitting/hierarchical/MZR/MZR_old/index.html b/dev/fitting/hierarchical/MZR/MZR_old/index.html index a8bff1e..f9427c3 100644 --- a/dev/fitting/hierarchical/MZR/MZR_old/index.html +++ b/dev/fitting/hierarchical/MZR/MZR_old/index.html @@ -34,4 +34,4 @@ \end{aligned}\]

and for our choice of a power law MZR we have

\[\begin{aligned} \mu_j &= [\text{M}/\text{H}]_0 + \alpha \, \left( \text{log} \left( \text{M}_* (t_j) \right) - \text{log} \left( \text{M}_0 \right) \right) \\ \frac{\partial \, \mu_j}{\partial \, \text{M}_* \left( t_j \right)} &= \frac{\alpha}{\text{M}_* \left( t_j \right) \, \text{ln} \, 10} \\ -\end{aligned}\]

such that we now have all the terms we need to compute the $\frac{\partial \, r_{j,k}}{\partial \, R_j}$ which enables us to compute the partial derivatives of the objective with respect to the $R_j$, $\frac{\partial \, F}{\partial \, R_j} = \sum_k \, \frac{\partial \, F}{\partial \, r_{j,k}} \, \frac{\partial \, r_{j,k}}{\partial \, R_j}$.

+\end{aligned}\]

such that we now have all the terms we need to compute the $\frac{\partial \, r_{j,k}}{\partial \, R_j}$ which enables us to compute the partial derivatives of the objective with respect to the $R_j$, $\frac{\partial \, F}{\partial \, R_j} = \sum_k \, \frac{\partial \, F}{\partial \, r_{j,k}} \, \frac{\partial \, r_{j,k}}{\partial \, R_j}$.

diff --git a/dev/fitting/hierarchical/dispersion_models/index.html b/dev/fitting/hierarchical/dispersion_models/index.html index f8b2252..17ba866 100644 --- a/dev/fitting/hierarchical/dispersion_models/index.html +++ b/dev/fitting/hierarchical/dispersion_models/index.html @@ -24,4 +24,4 @@ true julia> free_params(GaussianDispersion(0.2, (false,))) == (false,) -truesource

Metallicity Dispersion API

Below we describe the API that must be followed in order to implement new types for describing the $A_{j,k}$, such that they will work with our provided fitting and sampling methods.

StarFormationHistories.AbstractDispersionModelType

Abstract type for all models of metallicity dispersion at fixed time $t_j$, for which the mean metallicity is $\mu_j$. Concrete subtypes T <: AbstractDispersionModel should implement the following API:

  • (model::T)(x::Real, μ::Real) should be defined so that the struct is callable with a metallicity x and a mean metallicity μ, returning the relative weight for the metallicity x given the dispersion model. This is $A_{j,k}$ for $\mu = \mu_j$ in the derivations presented in the documentation.
  • nparams(model::T) should return the number of fittable parameters in the model.
  • fittable_params(model::T) should return the values of the fittable parameters in the model.
  • gradient(model::T, x::Real, μ::Real) should return a tuple that contains the partial derivative of the $A_{j,k}$ with respect to each fittable model parameter, plus the partial derivative with respect to μ as the final element.
  • update_params(model::T, newparams) should return a new instance of T with the fittable parameters contained in newparams (which is typically a vector or tuple) and non-fittable parameters inherited from the provided model.
  • transforms(model::T) should return a tuple of length nparams(model) which indicates how the fittable variables should be transformed for optimization, if at all. Elements should be 1 for parameters that are constrained to always be positive, 0 for parameters that can be positive or negative, and -1 for parameters that are constrained to always be negative.
  • free_params(model::T) should return an NTuple{nparams(model), Bool} that is true for fittable parameters that you want to optimize and false for fittable parameters that you want to stay fixed during optimization.
source
StarFormationHistories.nparamsMethod
nparams(model::AbstractDispersionModel)::Int

Returns the number of fittable parameters in the model.

source
StarFormationHistories.fittable_paramsMethod
fittable_params(model::AbstractDispersionModel{T})::NTuple{nparams(model), T}

Returns the values of the fittable parameters in the provided dispersion model model.

source
StarFormationHistories.gradientMethod
gradient(model::AbstractDispersionModel{T}, x::Real, μ::Real)::NTuple{nparams(model)+1, T}

Returns a tuple containing the partial derivative of the model with respect to all fittable parameters, plus the partial derivative with respect to the mean metallicity μ as the final element. These partial derivatives are evaluated at metallicity x where the model has expectation value μ.

source
StarFormationHistories.update_paramsMethod
update_params(model::T, newparams)::T where {T <: AbstractDispersionModel}

Returns a new instance of the model type T with the fittable parameters contained in newparams (which is typically a vector or tuple), with non-fittable parameters inherited from the provided model.

source
StarFormationHistories.transformsMethod
transforms(model::AbstractDispersionModel)::NTuple{nparams(model), Int}

Returns a tuple of length nparams(model) which indicates how the fittable variables should be transformed for optimization, if at all. Elements should be 1 for parameters that are constrained to always be positive, 0 for parameters that can be positive or negative, and -1 for parameters that are constrained to always be negative.

source
StarFormationHistories.free_paramsMethod
free_params(model::AbstractDispersionModel)::NTuple{nparams(model), Bool}

Returns an tuple of length nparams(model) that is true for fittable parameters that you want to optimize and false for fittable parameters that you want to stay fixed during optimization.

source
+truesource

Metallicity Dispersion API

Below we describe the API that must be followed in order to implement new types for describing the $A_{j,k}$, such that they will work with our provided fitting and sampling methods.

StarFormationHistories.AbstractDispersionModelType

Abstract type for all models of metallicity dispersion at fixed time $t_j$, for which the mean metallicity is $\mu_j$. Concrete subtypes T <: AbstractDispersionModel should implement the following API:

  • (model::T)(x::Real, μ::Real) should be defined so that the struct is callable with a metallicity x and a mean metallicity μ, returning the relative weight for the metallicity x given the dispersion model. This is $A_{j,k}$ for $\mu = \mu_j$ in the derivations presented in the documentation.
  • nparams(model::T) should return the number of fittable parameters in the model.
  • fittable_params(model::T) should return the values of the fittable parameters in the model.
  • gradient(model::T, x::Real, μ::Real) should return a tuple that contains the partial derivative of the $A_{j,k}$ with respect to each fittable model parameter, plus the partial derivative with respect to μ as the final element.
  • update_params(model::T, newparams) should return a new instance of T with the fittable parameters contained in newparams (which is typically a vector or tuple) and non-fittable parameters inherited from the provided model.
  • transforms(model::T) should return a tuple of length nparams(model) which indicates how the fittable variables should be transformed for optimization, if at all. Elements should be 1 for parameters that are constrained to always be positive, 0 for parameters that can be positive or negative, and -1 for parameters that are constrained to always be negative.
  • free_params(model::T) should return an NTuple{nparams(model), Bool} that is true for fittable parameters that you want to optimize and false for fittable parameters that you want to stay fixed during optimization.
source
StarFormationHistories.nparamsMethod
nparams(model::AbstractDispersionModel)::Int

Returns the number of fittable parameters in the model.

source
StarFormationHistories.fittable_paramsMethod
fittable_params(model::AbstractDispersionModel{T})::NTuple{nparams(model), T}

Returns the values of the fittable parameters in the provided dispersion model model.

source
StarFormationHistories.gradientMethod
gradient(model::AbstractDispersionModel{T}, x::Real, μ::Real)::NTuple{nparams(model)+1, T}

Returns a tuple containing the partial derivative of the model with respect to all fittable parameters, plus the partial derivative with respect to the mean metallicity μ as the final element. These partial derivatives are evaluated at metallicity x where the model has expectation value μ.

source
StarFormationHistories.update_paramsMethod
update_params(model::T, newparams)::T where {T <: AbstractDispersionModel}

Returns a new instance of the model type T with the fittable parameters contained in newparams (which is typically a vector or tuple), with non-fittable parameters inherited from the provided model.

source
StarFormationHistories.transformsMethod
transforms(model::AbstractDispersionModel)::NTuple{nparams(model), Int}

Returns a tuple of length nparams(model) which indicates how the fittable variables should be transformed for optimization, if at all. Elements should be 1 for parameters that are constrained to always be positive, 0 for parameters that can be positive or negative, and -1 for parameters that are constrained to always be negative.

source
StarFormationHistories.free_paramsMethod
free_params(model::AbstractDispersionModel)::NTuple{nparams(model), Bool}

Returns an tuple of length nparams(model) that is true for fittable parameters that you want to optimize and false for fittable parameters that you want to stay fixed during optimization.

source
diff --git a/dev/fitting/hierarchical/fixed_amr/index.html b/dev/fitting/hierarchical/fixed_amr/index.html index 12f7e80..a943648 100644 --- a/dev/fitting/hierarchical/fixed_amr/index.html +++ b/dev/fitting/hierarchical/fixed_amr/index.html @@ -14,4 +14,4 @@ relweights::AbstractVector{<:Number}; relweightsmin::Number=0, x0=construct_x0_mdf(logAge, convert(S,13.7)), - kws...) where S <: Number

Method that fits a linear combination of the provided Hess diagrams models to the observed Hess diagram data, under an externally-imposed age-metallicity relation (AMR) and/or metallicity distribution function (MDF). As such, a number of coefficients equal to length(unique(logAge)) are returned; that is, only one coefficient is derived per unique entry in logAge.

The second call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

Arguments

Keyword Arguments

Other kws... are passed to Optim.options to set things like convergence criteria for the optimization.

Notes

source + kws...) where S <: Number

Method that fits a linear combination of the provided Hess diagrams models to the observed Hess diagram data, under an externally-imposed age-metallicity relation (AMR) and/or metallicity distribution function (MDF). As such, a number of coefficients equal to length(unique(logAge)) are returned; that is, only one coefficient is derived per unique entry in logAge.

The second call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

Arguments

Keyword Arguments

Other kws... are passed to Optim.options to set things like convergence criteria for the optimization.

Notes

source diff --git a/dev/fitting/hierarchical/linear_amr/index.html b/dev/fitting/hierarchical/linear_amr/index.html index ad3e775..eb8aebe 100644 --- a/dev/fitting/hierarchical/linear_amr/index.html +++ b/dev/fitting/hierarchical/linear_amr/index.html @@ -2,15 +2,15 @@ Linear Age-Metallicity Relation · StarFormationHistories.jl

Linear Age-Metallicity Relation

Here we describe the linear age-metallicity relation $\langle [\text{M}/\text{H}] \rangle (t) = \alpha \, \left( T_\text{max} - t \right) + \beta$ with a Gaussian distribution in metallicity at fixed age as described by the GaussianDispersion dispersion model. $T_\text{max}$ here is the earliest lookback time under consideration such that $\langle [\text{M}/\text{H}] \rangle (T_\text{max}) = \beta$. If the per-age-bin stellar mass coefficients are $R_j$, the age of the stellar population $j$ is $t_j$, and the metallicity of population $k$ is $[\text{M}/\text{H}]_k$, then we can write the per-model $r_{j,k}$ (where we are now using separate indices for age and metallicity) as

\[\begin{aligned} \mu_j &= \alpha \, \left( T_\text{max} - t_j \right) + \beta \\ r_{j,k} &= R_j \, \frac{ \text{exp} \left( - \left( \frac{ [\text{M}/\text{H}]_k - \mu_j}{\sigma} \right)^2 \right)}{\sum_k \text{exp} \left( - \left( \frac{ [\text{M}/\text{H}]_k - \mu_j}{\sigma} \right)^2 \right)} -\end{aligned}\]

where the numerator is the MDF at fixed age evaluated at metallicity $[\text{M}/\text{H}]_k$ and the denominator is a normalizing coefficient that ensures $\sum_k r_{j,k} = R_j$. In this notation, bin $i$ of the complex model Hess diagram (equation 1 of Dolphin 2002) is

\[m_i = \sum_{j,k} \, r_{j,k} \; c_{i,j,k}\]

Below we show a fit using this hierarchical model to the same data as was used to derive the unconstrained fit in the introduction.

Example of a SFH fit with a linear metallicity evolution.

This model is represented by the LinearAMR type, which is a subtype of AbstractAMR.

StarFormationHistories.AbstractAMRType

AbstractAMR{T <: Real} <: AbstractMetallicityModel{T}: abstract supertype for all metallicity models that are age-metallicity relations. Concrete subtypes T <: AbstractAMR should implement the following API:

  • (model::T)(logAge::Real) should be defined so that the struct is callable with a logarithmic age (log10(age [yr])), returning the mean metallicity given the AMR model. This is $\mu_j \left( t_j \right)$ in the derivations presented in the documentation.
  • nparams(model::T) should return the number of fittable parameters in the model.
  • fittable_params(model::T) should return the values of the fittable parameters in the model.
  • gradient(model::T, logAge::Real) should return a tuple that contains the partial derivative of the mean metallicity $\mu_j$ with respect to each fittable model parameter evaluated at logarithmic age logAge.
  • update_params(model::T, newparams) should return a new instance of T with the fittable parameters contained in newparams (which is typically a vector or tuple) and non-fittable parameters inherited from the provided model.
  • transforms(model::T) should return a tuple of length nparams(model) which indicates how the fittable variables should be transformed for optimization, if at all. Elements should be 1 for parameters that are constrained to always be positive, 0 for parameters that can be positive or negative, and -1 for parameters that are constrained to always be negative.
  • free_params(model::T) should return an NTuple{nparams(model), Bool} that is true for fittable parameters that you want to optimize and false for fittable parameters that you want to stay fixed during optimization.
source
StarFormationHistories.LinearAMRType
LinearAMR(α::Real,
+\end{aligned}\]

where the numerator is the MDF at fixed age evaluated at metallicity $[\text{M}/\text{H}]_k$ and the denominator is a normalizing coefficient that ensures $\sum_k r_{j,k} = R_j$. In this notation, bin $i$ of the complex model Hess diagram (equation 1 of Dolphin 2002) is

\[m_i = \sum_{j,k} \, r_{j,k} \; c_{i,j,k}\]

Below we show a fit using this hierarchical model to the same data as was used to derive the unconstrained fit in the introduction.

Example of a SFH fit with a linear metallicity evolution.

This model is represented by the LinearAMR type, which is a subtype of AbstractAMR.

StarFormationHistories.AbstractAMRType

AbstractAMR{T <: Real} <: AbstractMetallicityModel{T}: abstract supertype for all metallicity models that are age-metallicity relations. Concrete subtypes T <: AbstractAMR should implement the following API:

  • (model::T)(logAge::Real) should be defined so that the struct is callable with a logarithmic age (log10(age [yr])), returning the mean metallicity given the AMR model. This is $\mu_j \left( t_j \right)$ in the derivations presented in the documentation.
  • nparams(model::T) should return the number of fittable parameters in the model.
  • fittable_params(model::T) should return the values of the fittable parameters in the model.
  • gradient(model::T, logAge::Real) should return a tuple that contains the partial derivative of the mean metallicity $\mu_j$ with respect to each fittable model parameter evaluated at logarithmic age logAge.
  • update_params(model::T, newparams) should return a new instance of T with the fittable parameters contained in newparams (which is typically a vector or tuple) and non-fittable parameters inherited from the provided model.
  • transforms(model::T) should return a tuple of length nparams(model) which indicates how the fittable variables should be transformed for optimization, if at all. Elements should be 1 for parameters that are constrained to always be positive, 0 for parameters that can be positive or negative, and -1 for parameters that are constrained to always be negative.
  • free_params(model::T) should return an NTuple{nparams(model), Bool} that is true for fittable parameters that you want to optimize and false for fittable parameters that you want to stay fixed during optimization.
source
StarFormationHistories.LinearAMRType
LinearAMR(α::Real,
           β::Real,
           T_max::Real = 137//10,
-          free::NTuple{2, Bool} = (true, true))

Subtype of AbstractAMR implementing the linear age-metallicity relation where the mean metallicity at a lookback time $t_j$ (in Gyr) is μ_j = α * (T_max - t_j) + β. α is therefore a slope describing the rate of change in the metallicity per Gyr, and β is the mean metallicity value of stars being born at a lookback time of T_max, which has units of Gyr. free controls whether α and β should be freely fit or fixed when passed into fit_sfh; if free[1] == true then α will be freely fit, whereas it will fixed if free[1] == false. free[2] has the same effect but for β.

source
LinearAMR(constraint1, constraint2, T_max::Real=137//10,
+          free::NTuple{2, Bool} = (true, true))

Subtype of AbstractAMR implementing the linear age-metallicity relation where the mean metallicity at a lookback time $t_j$ (in Gyr) is μ_j = α * (T_max - t_j) + β. α is therefore a slope describing the rate of change in the metallicity per Gyr, and β is the mean metallicity value of stars being born at a lookback time of T_max, which has units of Gyr. free controls whether α and β should be freely fit or fixed when passed into fit_sfh; if free[1] == true then α will be freely fit, whereas it will fixed if free[1] == false. free[2] has the same effect but for β.

source
LinearAMR(constraint1, constraint2, T_max::Real=137//10,
           free::NTuple{2, Bool}=(true, true))

Construct an instance of LinearAMR from MH constraints at two different lookback times. Each of constraint1 and constraint2 should be length-2 indexables (e.g., tuples) whose first element is a metallicity [M/H] and second element is a lookback time in Gyr. The order of the constraints does not matter.

Examples

julia> LinearAMR((-2.5, 13.7), (-1.0, 0.0), 13.7) isa LinearAMR{Float64}
 true
 
 julia> LinearAMR((-2.5, 13.7), (-1.0, 0.0), 13.7) == LinearAMR((-1.0, 0.0), (-2.5, 13.7), 13.7)
-true
source

Fitting Functions

fit_sfh and sample_sfh both work with this AMR model.

The method StarFormationHistories.construct_x0_mdf can be used to construct the stellar mass components $R_j$ of the initial guess vector x0.

Fitting Functions

fit_sfh and sample_sfh both work with this AMR model.

The method StarFormationHistories.construct_x0_mdf can be used to construct the stellar mass components $R_j$ of the initial guess vector x0.

StarFormationHistories.construct_x0_mdfFunction
x0::Vector = construct_x0_mdf(logAge::AbstractVector{T},
                               [ cum_sfh, ]
                               T_max::Number;
                               normalize_value::Number = one(T)) where T <: Number

Generates a vector of initial stellar mass normalizations for input to fit_sfh and similar methods with a total stellar mass of normalize_value. The logAge vector must contain the log10(Age [yr]) of each isochrone that you are going to input as models. If cum_sfh is not provided, a constant star formation rate is assumed. For the purposes of computing the constant star formation rate, the provided logAge are treated as left-bin edges, with the final right-bin edge being T_max, which has units of Gyr. For example, you might have logAge=[6.6, 6.7, 6.8] in which case a final logAge of 6.9 would give equal bin widths (in log-space). In this case you would set T_max = exp10(6.9) / 1e9 ≈ 0.0079 so that the width of the final bin for the star formation rate calculation has the same log10(Age [yr]) step as the other bins.

A desired cumulative SFH vector cum_sfh::AbstractVector{<:Number} can be provided as the second argument, which should correspond to a lookback time vector unique(logAge). You can also provide cum_sfh as a length-2 indexable (e.g., a length-2 Vector{Vector{<:Number}}) with the first element containing a list of log10(Age [yr]) values and the second element containing the cumulative SFH values at those values. This cumulative SFH is then interpolated onto the logAge provided in the first argument. This method should be used when you want to define the cumulative SFH on a different age grid from the logAge you provide in the first argument. The examples below demonstrate these use cases.

The difference between this function and StarFormationHistories.construct_x0 is that this function generates an x0 vector that is of length length(unique(logage)) (that is, a single normalization factor for each unique entry in logAge) while StarFormationHistories.construct_x0 returns an x0 vector that is of length length(logAge); that is, a normalization factor for every entry in logAge. The order of the coefficients is such that the coefficient x[i] corresponds to the entry unique(logAge)[i].

Notes

Examples – Constant SFR

julia> isapprox( construct_x0_mdf([9.0, 8.0, 7.0], 10.0; normalize_value=5.0),
@@ -41,7 +41,7 @@
 julia> isapprox( construct_x0_mdf([9.0, 8.0, 7.0],
                                   [[9.0, 8.5, 8.25, 7.0], [0.9009, 0.945945, 0.9887375, 1.0]], 10.0; normalize_value=5.0),
                  construct_x0_mdf([9.0, 8.0, 7.0], [0.9009, 0.99099, 1.0], 10.0; normalize_value=5.0) )
-true
source

and calculate_coeffs can be used to calculate per-template stellar mass coefficients (the $r_{j,k}$ above) given the results of a fit (which will be the $R_j$ in the equations above).

Implementation

While one could optimize the above model without an analytic gradient, such gradient-free methods are typically slower and less robust. One could also calculate the gradient numerically using finite differences or auto-differentiation, but these are still slower than analytic calculations. We will show that the gradient of this hierarchical model is analytic, allowing us to design an efficient optimization scheme.

Equation 21 in Dolphin 2001 gives the gradient of our objective function with respect to the underlying coefficients

\[\begin{aligned} +true

source

and calculate_coeffs can be used to calculate per-template stellar mass coefficients (the $r_{j,k}$ above) given the results of a fit (which will be the $R_j$ in the equations above).

Implementation

While one could optimize the above model without an analytic gradient, such gradient-free methods are typically slower and less robust. One could also calculate the gradient numerically using finite differences or auto-differentiation, but these are still slower than analytic calculations. We will show that the gradient of this hierarchical model is analytic, allowing us to design an efficient optimization scheme.

Equation 21 in Dolphin 2001 gives the gradient of our objective function with respect to the underlying coefficients

\[\begin{aligned} F \equiv - \text{ln} \, \mathscr{L} &= \sum_i m_i - n_i \times \left( 1 - \text{ln} \, \left( \frac{n_i}{m_i} \right) \right) \\ \frac{\partial \, F}{\partial \, r_{j,k}} &= \sum_i c_{i,j,k} \left( 1 - \frac{n_i}{m_i} \right) \end{aligned}\]

where $c_{i,j,k}$ is the value of template $j,k$ in bin $i$ and $n_i$ is bin $i$ of the observed Hess diagram. These partial derivatives are easy to obtain, but we need partials with respect to the per-age-bin fitting parameters $R_j$. Given the above relation between $r_{j,k}$ and $R_j$, we can calculate these derivatives as

\[\begin{aligned} @@ -63,4 +63,4 @@ \frac{\partial \, F}{\partial \, \sigma} &= \sum_{j,k} \frac{\partial \, F}{\partial \, r_{j,k}} \, \frac{\partial \, r_{j,k}}{\partial \, \sigma} \\ \frac{\partial \, r_{j,k}}{\partial \, \sigma} &= R_j \left( \frac{1}{\sum_k \, A_{j,k}} \, \frac{\partial \, A_{j,k}}{\partial \, \sigma} - \frac{A_{j,k}}{\left( \sum_k \, A_{j,k} \right)^2} \, \frac{\partial \, \sum_k \, A_{j,k}}{\partial \, \sigma} \right) \\ &= \frac{R_j}{\sum_k \, A_{j,k}} \left( \frac{\partial \, A_{j,k}}{\partial \, \sigma} - \frac{A_{j,k}}{\sum_k \, A_{j,k}} \sum_k \frac{\partial \, A_{j,k}}{\partial \, \sigma} \right) \\ -\end{aligned}\]

Then all we need is

\[\frac{\partial \, A_{j,k}}{\partial \, \sigma} = \frac{A_{j,k} \, \left( [\text{M}/\text{H}]_k - \mu_j \right)^2}{\sigma^3}\]

which we can substitute into the above expressions to find $\frac{\partial \, F}{\partial \, \sigma}$.

+\end{aligned}\]

Then all we need is

\[\frac{\partial \, A_{j,k}}{\partial \, \sigma} = \frac{A_{j,k} \, \left( [\text{M}/\text{H}]_k - \mu_j \right)^2}{\sigma^3}\]

which we can substitute into the above expressions to find $\frac{\partial \, F}{\partial \, \sigma}$.

diff --git a/dev/fitting/hierarchical/log_amr/index.html b/dev/fitting/hierarchical/log_amr/index.html index 8fa4fb6..b1f6942 100644 --- a/dev/fitting/hierarchical/log_amr/index.html +++ b/dev/fitting/hierarchical/log_amr/index.html @@ -7,14 +7,14 @@ T_max::Real = 137//10, MH_func = MH_from_Z, dMH_dZ = dMH_dZ, - free::NTuple{2, Bool} = (true, true))

Subtype of AbstractAMR implementing the logarithmic age-metallicity relation where the mean metal mass fraction Z at a lookback time $t_j$ (in Gyr) is Z = α * (T_max - t_j) + β. α is therefore a slope describing the rate of change in the metal mass fraction per Gyr, and β is the mean metal mass fraction of stars being born at a lookback time of T_max, which has units of Gyr. MH_func must be a callable (e.g., a function) that takes a single argument Z and converts it to [M/H]; the default function is appropriate for PARSEC stellar models. dMH_dZ must be a callable that takes a single argument Z and returns the derivative of MH_func with respect to Z. free controls whether α and β should be freely fit or fixed when passed into fit_sfh; if free[1] == true then α will be freely fit, whereas it will fixed if free[1] == false. free[2] has the same effect but for β.

source
LogarithmicAMR(constraint1, constraint2, T_max::Real=137//10,
+               free::NTuple{2, Bool} = (true, true))

Subtype of AbstractAMR implementing the logarithmic age-metallicity relation where the mean metal mass fraction Z at a lookback time $t_j$ (in Gyr) is Z = α * (T_max - t_j) + β. α is therefore a slope describing the rate of change in the metal mass fraction per Gyr, and β is the mean metal mass fraction of stars being born at a lookback time of T_max, which has units of Gyr. MH_func must be a callable (e.g., a function) that takes a single argument Z and converts it to [M/H]; the default function is appropriate for PARSEC stellar models. dMH_dZ must be a callable that takes a single argument Z and returns the derivative of MH_func with respect to Z. free controls whether α and β should be freely fit or fixed when passed into fit_sfh; if free[1] == true then α will be freely fit, whereas it will fixed if free[1] == false. free[2] has the same effect but for β.

source
LogarithmicAMR(constraint1, constraint2, T_max::Real=137//10,
                MH_func = MH_from_Z, dMH_dZ = dMH_dZ, Z_func = Z_from_MH,
                free::NTuple{2, Bool}=(true, true))

Construct an instance of LogarithmicAMR from MH constraints at two different lookback times. Each of constraint1 and constraint2 should be length-2 indexables (e.g., tuples) whose first element is a metallicity [M/H] and second element is a lookback time in Gyr. The order of the constraints does not matter.

Examples

julia> LogarithmicAMR((-2.5, 13.7), (-1.0, 0.0), 13.7) isa LogarithmicAMR{Float64}
 true
 
 julia> LogarithmicAMR((-2.5, 13.7), (-1.0, 0.0), 13.7) ==
            LogarithmicAMR((-1.0, 0.0), (-2.5, 13.7), 13.7)
-true
source

The per-model coefficients (the $r_{j,k}$ above) implied by a such a logarithmic AMR can be calculated with calculate_coeffs and an example is shown below.

Visualization of the relative weights across a grid of logAge and metallicity under a logarithmic age-metallicity relation.

Fitting Functions

fit_sfh and sample_sfh both work with this AMR model.

The method StarFormationHistories.construct_x0_mdf can be used to construct the stellar mass components $R_j$ of the initial guess vector x0.

Implementation

As the only part of the model that differs from the linear AMR case is the mean age-metallicity relation, most of the derivation for the linear AMR case is still valid here. In particular, only the partial derivatives of the relative weights $A_{j,k} \equiv \text{exp} \left( -\frac{1}{2 \, \sigma^2} \, \left( [\text{M}/\text{H}]_k - \mu_j \right)^2\right)$ with respect to the fitting parameters $\alpha$ and $\beta$ need to be recalculated under the new model. The partial derivative with respect to $\sigma$ is the same, as the mean metallicity in time bin $j$, denoted $\mu_j$, does not depend on $\sigma$.

\[\begin{aligned} +truesource

The per-model coefficients (the $r_{j,k}$ above) implied by a such a logarithmic AMR can be calculated with calculate_coeffs and an example is shown below.

Visualization of the relative weights across a grid of logAge and metallicity under a logarithmic age-metallicity relation.

Fitting Functions

fit_sfh and sample_sfh both work with this AMR model.

The method StarFormationHistories.construct_x0_mdf can be used to construct the stellar mass components $R_j$ of the initial guess vector x0.

Implementation

As the only part of the model that differs from the linear AMR case is the mean age-metallicity relation, most of the derivation for the linear AMR case is still valid here. In particular, only the partial derivatives of the relative weights $A_{j,k} \equiv \text{exp} \left( -\frac{1}{2 \, \sigma^2} \, \left( [\text{M}/\text{H}]_k - \mu_j \right)^2\right)$ with respect to the fitting parameters $\alpha$ and $\beta$ need to be recalculated under the new model. The partial derivative with respect to $\sigma$ is the same, as the mean metallicity in time bin $j$, denoted $\mu_j$, does not depend on $\sigma$.

\[\begin{aligned} Z_j &\equiv \langle Z \left(t_j\right) \rangle = \alpha \, \left( T_\text{max} - t_j \right) + \beta \\ \\ \mu_j &\equiv \langle [\text{M}/\text{H}] \rangle \left(t_j\right) = \text{log} \left( \frac{\langle Z\left(t_j\right) \rangle}{X_j} \right) - \text{log} \left( \frac{Z_\odot}{X_\odot} \right) \\ @@ -47,4 +47,4 @@ %% \frac{\partial \, A_{j,k}}{\partial \, \beta} &= \frac{\partial \, A_{j,k}}{\partial \, \mu_j} \, \frac{\partial \mu_j}{\partial \beta} = \left( \frac{A_{j,k} \, \left( [\text{M}/\text{H}]_k - \mu_j \right)}{\sigma^2} \right) \, \left( \frac{1}{\left( t_j \, \alpha + \beta \right) \, \text{ln}(10)} \right) \\ %% &= \frac{A_{j,k} \, \left( [\text{M}/\text{H}]_k - \mu_j \right)}{\text{ln}(10) \, \sigma^2 \, \left( t_j \, \alpha + \beta \right)} \\ %% \frac{\partial \, A_{j,k}}{\partial \, \alpha} &= \frac{\partial \, A_{j,k}}{\partial \, \mu_j} \, \frac{\partial \mu_j}{\partial \alpha} = t \, \frac{\partial \, A_{j,k}}{\partial \, \beta} -\end{aligned}\]

+\end{aligned}\]

diff --git a/dev/fitting/hierarchical/log_amr_plot.svg b/dev/fitting/hierarchical/log_amr_plot.svg index e60548e..19a3c8c 100644 --- a/dev/fitting/hierarchical/log_amr_plot.svg +++ b/dev/fitting/hierarchical/log_amr_plot.svg @@ -1,81 +1,81 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - + + + + + + + + diff --git a/dev/fitting/hierarchical/overview/index.html b/dev/fitting/hierarchical/overview/index.html index ae3ab17..5068a56 100644 --- a/dev/fitting/hierarchical/overview/index.html +++ b/dev/fitting/hierarchical/overview/index.html @@ -1,5 +1,5 @@ -Overview · StarFormationHistories.jl

Overview

Why should the metallicity evolution be constrained? While the above methods work well for optimizing the per-template $r_j$ as a means for fitting SFHs, these methods can produce metallicity evolutions that could be considered unphysical, with large changes in the mean metallicity over small changes in time. An example of this type of behavior is shown in the SFH fit below.

Example of a SFH fit with variations in the metallicity evolution.

While some metallicity variation in the star-forming gas is to be expected, these variations in the SFH fit can end up being quite large depending on the data and isochrone grid adopted. A solution is to construct a more physically-motivated model.

We can do this using a hierarchical model with a parameterized metallicity evolution where the the $r_j$ are not the parameters directly optimized. Rather, we can optimize one stellar mass (or star formation rate) parameter per age bin, and then a number of metallicity evolution parameters that determine how that stellar mass is split between models with different metallicities at fixed age.

In most star formation history analyses, the metallicities are constrained through age-metallicity relations (AMRs), where the mean metallicity at time $t$ is a function of time and a small set of metallicity evolution parameters. A popular AMR model is the linear age-metallicity relation $\langle [\text{M}/\text{H}] \rangle (t) = \alpha \, \left( T_\text{max} - t \right) + \beta$ with a Gaussian distribution in metallicity at fixed age. $T_\text{max}$ here is the earliest lookback time under consideration such that $\langle [\text{M}/\text{H}] \rangle (T_\text{max}) = \beta$. This model is described in more detail here.

AMRs have historically been popular because they are generally capable of producing reasonable fits to observed data and it is relatively easy to derive the gradient of the objective function with respect to the AMR parameters analytically. However, in AMR models there is no direct link between the SFRs being fit and the metallicity evolution as a function of time, even though the two should in principle have some correlation as stellar processes are responsible for enriching the ISM.

A promising avenue of research involves fitting mass-metallicity relations (MZRs) rather than AMRs. In these models, the mean metallicity of stars forming at time $t$ is a function of the total stellar mass of the population at that time – therefore, the mean metallicity evolution changes self-consistently with the SFRs during the fitting process, resulting in a metallicity evolution that is meaningfully coupled to the star formation history. Additionally, AMRs can be difficult to compare between different galaxies because they do not reflect the different SFHs of the galaxies, whereas MZRs can be compared between galaxies much more easily. Our methods for MZR fitting are described in more detail here.

Generic Methods

While there are some methods in this package that are unique to AMR or MZR models, we present a minimal unified interface that can be used to fit SFHs under both types of models. To support multiple dispatch, we define AbstractMetallicityModel as the abstract supertype of AbstractAMR and AbstractMZR, which are each the supertypes for AMR and MZR types, respectively.

The generic methods that can be used for both AMRs and MZRs are described here. The main method for obtaining best-fit star formation histories is fit_sfh.

StarFormationHistories.fit_sfhFunction
fit_sfh(MH_model0::AbstractMetallicityModel,
+Overview · StarFormationHistories.jl

Overview

Why should the metallicity evolution be constrained? While the above methods work well for optimizing the per-template $r_j$ as a means for fitting SFHs, these methods can produce metallicity evolutions that could be considered unphysical, with large changes in the mean metallicity over small changes in time. An example of this type of behavior is shown in the SFH fit below.

Example of a SFH fit with variations in the metallicity evolution.

While some metallicity variation in the star-forming gas is to be expected, these variations in the SFH fit can end up being quite large depending on the data and isochrone grid adopted. A solution is to construct a more physically-motivated model.

We can do this using a hierarchical model with a parameterized metallicity evolution where the the $r_j$ are not the parameters directly optimized. Rather, we can optimize one stellar mass (or star formation rate) parameter per age bin, and then a number of metallicity evolution parameters that determine how that stellar mass is split between models with different metallicities at fixed age.

In most star formation history analyses, the metallicities are constrained through age-metallicity relations (AMRs), where the mean metallicity at time $t$ is a function of time and a small set of metallicity evolution parameters. A popular AMR model is the linear age-metallicity relation $\langle [\text{M}/\text{H}] \rangle (t) = \alpha \, \left( T_\text{max} - t \right) + \beta$ with a Gaussian distribution in metallicity at fixed age. $T_\text{max}$ here is the earliest lookback time under consideration such that $\langle [\text{M}/\text{H}] \rangle (T_\text{max}) = \beta$. This model is described in more detail here.

AMRs have historically been popular because they are generally capable of producing reasonable fits to observed data and it is relatively easy to derive the gradient of the objective function with respect to the AMR parameters analytically. However, in AMR models there is no direct link between the SFRs being fit and the metallicity evolution as a function of time, even though the two should in principle have some correlation as stellar processes are responsible for enriching the ISM.

A promising avenue of research involves fitting mass-metallicity relations (MZRs) rather than AMRs. In these models, the mean metallicity of stars forming at time $t$ is a function of the total stellar mass of the population at that time – therefore, the mean metallicity evolution changes self-consistently with the SFRs during the fitting process, resulting in a metallicity evolution that is meaningfully coupled to the star formation history. Additionally, AMRs can be difficult to compare between different galaxies because they do not reflect the different SFHs of the galaxies, whereas MZRs can be compared between galaxies much more easily. Our methods for MZR fitting are described in more detail here.

Generic Methods

While there are some methods in this package that are unique to AMR or MZR models, we present a minimal unified interface that can be used to fit SFHs under both types of models. To support multiple dispatch, we define AbstractMetallicityModel as the abstract supertype of AbstractAMR and AbstractMZR, which are each the supertypes for AMR and MZR types, respectively.

The generic methods that can be used for both AMRs and MZRs are described here. The main method for obtaining best-fit star formation histories is fit_sfh.

StarFormationHistories.fit_sfhFunction
fit_sfh(MH_model0::AbstractMetallicityModel,
         disp_model0::AbstractDispersionModel,
         models::AbstractMatrix{<:Number},
         data::AbstractVector{<:Number},
@@ -14,12 +14,12 @@
         logAge::AbstractVector{<:Number},
         metallicities::AbstractVector{<:Number};
         x0::AbstractVector{<:Number} = <...>
-        kws...)

Returns a CompositeBFGSResult instance that contains the maximum a posteriori (MAP) and maximum likelihood estimates (MLE) obtained from fitting the provided simple stellar population (SSP) templates models (with logarithmic ages logAge = log10(age [yr]) and metallicities metallicities) to the provided data. The metallicity evolution is modelled using the provided MH_model0, whose parameters can be free or fixed, with metallicity dispersion at fixed time modelled by disp_model0, whose parameters can be free or fixed.

This method is designed to work best with a grid of stellar models, defined by the outer product of N unique entries in logAge and M unique entries in metallicities. See the examples for more information on usage.

We provide several options for age-metallicity relations and mass-metallicity relations that can be used for MH_model0 and define APIs for users to create new models that will integrate with this function. Similar flexibility is allowed for the metallicity dispersion model disp_model0.

The primary method signature uses flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details, as well as stack_models that facilitates rearranging the models into this flattened format.

Arguments

  • MH_model0 is an instance of AbstractMetallicityModel that defines how the average metallicity stars being formed in the population changes over time. The fittable parameters contained in this instance are used as the initial values to start the optimization.
  • disp_model0 is an instance of AbstractDispersionModel that defines the distribution of metallicities of stars forming in a fixed time bin (i.e., the dispersion in metallicity around the mean at fixed time). The fittable parameters contained in this instance are used as the initial values to start the optimization.
  • models are the template Hess diagrams for the SSPs that compose the observed Hess diagram.
  • data is the Hess diagram for the observed data.
  • logAge::AbstractVector{<:Number} is the vector containing the effective ages of the stellar populations used to create the templates in models, in units of log10(age [yr]). For example, if a population has an age of 1 Myr, its entry in logAge should be log10(10^6) = 6.0.
  • metallicities::AbstractVector{<:Number} is the vector containing the effective metallicities of the stellar populations used to create the templates in models. These should be logarithmic abundances like [M/H] or [Fe/H]. There are some notes on the Wikipedia that might be useful.

Keyword Arguments

  • x0 is the vector of initial guesses for the stellar mass coefficients per unique entry in logAge. We try to set reasonable defaults, but in most cases users should be calculating and passing this keyword argument. We provide StarFormationHistories.construct_x0_mdf to prepare x0 assuming a constant star formation rate and total stellar mass, which is typically a good initial guess.
  • kws... are passed to Optim.Options and can be used to control tolerances for convergence.

Returns

  • This function returns a CompositeBFGSResult that contains the output from both MLE and MAP optimizations, accessible via result.mle and result.map. These are each instances of BFGSResult. See the docs for these structs for more information.
source

This function returns an instance of CompositeBFGSResult.

StarFormationHistories.CompositeBFGSResultType
CompositeBFGSResult(map::BFGSResult, mle::BFGSResult)

Type for containing the maximum a posteriori (MAP) AND maximum likelihood estimate (MLE) results from BFGS optimizations that use Optim.jl, which are individually accessible via the :mle and :map properties (i.e., for an instance of this type t, t.mle or getproperty(t, :mle) and t.map or getproperty(t, :map)).

Random samples can be drawn from an instance t as rand(t, N::Integer). This will return a size length(μ) x N matrix. This will use the MLE result for the best-fit values and the inverse Hessian approximation to the covariance matrix from the MAP result, which is more robust when best-fit values that are constrained to be positive approach 0.

Per-SSP coefficients can be calculated with calculate_coeffs(result::CompositeBFGSResult, logAge::AbstractVector{<:Number}, metallicities::AbstractVector{<:Number}), which uses the MLE result (see these docs).

source
StarFormationHistories.BFGSResultType
BFGSResult(μ::AbstractVector{<:Number},
+        kws...)

Returns a CompositeBFGSResult instance that contains the maximum a posteriori (MAP) and maximum likelihood estimates (MLE) obtained from fitting the provided simple stellar population (SSP) templates models (with logarithmic ages logAge = log10(age [yr]) and metallicities metallicities) to the provided data. The metallicity evolution is modelled using the provided MH_model0, whose parameters can be free or fixed, with metallicity dispersion at fixed time modelled by disp_model0, whose parameters can be free or fixed.

This method is designed to work best with a grid of stellar models, defined by the outer product of N unique entries in logAge and M unique entries in metallicities. See the examples for more information on usage.

We provide several options for age-metallicity relations and mass-metallicity relations that can be used for MH_model0 and define APIs for users to create new models that will integrate with this function. Similar flexibility is allowed for the metallicity dispersion model disp_model0.

The primary method signature uses flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details, as well as stack_models that facilitates rearranging the models into this flattened format.

Arguments

  • MH_model0 is an instance of AbstractMetallicityModel that defines how the average metallicity stars being formed in the population changes over time. The fittable parameters contained in this instance are used as the initial values to start the optimization.
  • disp_model0 is an instance of AbstractDispersionModel that defines the distribution of metallicities of stars forming in a fixed time bin (i.e., the dispersion in metallicity around the mean at fixed time). The fittable parameters contained in this instance are used as the initial values to start the optimization.
  • models are the template Hess diagrams for the SSPs that compose the observed Hess diagram.
  • data is the Hess diagram for the observed data.
  • logAge::AbstractVector{<:Number} is the vector containing the effective ages of the stellar populations used to create the templates in models, in units of log10(age [yr]). For example, if a population has an age of 1 Myr, its entry in logAge should be log10(10^6) = 6.0.
  • metallicities::AbstractVector{<:Number} is the vector containing the effective metallicities of the stellar populations used to create the templates in models. These should be logarithmic abundances like [M/H] or [Fe/H]. There are some notes on the Wikipedia that might be useful.

Keyword Arguments

  • x0 is the vector of initial guesses for the stellar mass coefficients per unique entry in logAge. We try to set reasonable defaults, but in most cases users should be calculating and passing this keyword argument. We provide StarFormationHistories.construct_x0_mdf to prepare x0 assuming a constant star formation rate and total stellar mass, which is typically a good initial guess.
  • kws... are passed to Optim.Options and can be used to control tolerances for convergence.

Returns

  • This function returns a CompositeBFGSResult that contains the output from both MLE and MAP optimizations, accessible via result.mle and result.map. These are each instances of BFGSResult. See the docs for these structs for more information.
source

This function returns an instance of CompositeBFGSResult.

StarFormationHistories.CompositeBFGSResultType
CompositeBFGSResult(map::BFGSResult, mle::BFGSResult)

Type for containing the maximum a posteriori (MAP) AND maximum likelihood estimate (MLE) results from BFGS optimizations that use Optim.jl, which are individually accessible via the :mle and :map properties (i.e., for an instance of this type t, t.mle or getproperty(t, :mle) and t.map or getproperty(t, :map)).

Random samples can be drawn from an instance t as rand(t, N::Integer). This will return a size length(μ) x N matrix. This will use the MLE result for the best-fit values and the inverse Hessian approximation to the covariance matrix from the MAP result, which is more robust when best-fit values that are constrained to be positive approach 0.

Per-SSP coefficients can be calculated with calculate_coeffs(result::CompositeBFGSResult, logAge::AbstractVector{<:Number}, metallicities::AbstractVector{<:Number}), which uses the MLE result (see these docs).

source
StarFormationHistories.BFGSResultType
BFGSResult(μ::AbstractVector{<:Number},
            σ::AbstractVector{<:Number},
            invH::AbstractMatrix{<:Number},
            result,
            MH_model::AbstractMetallicityModel,
-           disp_model::AbstractDispersionModel)

Type for containing the maximum likelihood estimate (MLE) or maximum a posteriori (MAP) results from BFGS optimizations that use Optim.jl. Fields are as follows:

  • μ contains the final values of the fitting parameters. The mode and median methods will both return μ, but the mean of samples is not always equal to μ due to the variable transformations we perform.
  • σ contains the standard errors estimated for the parameters and is returned by the std method.
  • invH is the BFGS approximation to the inverse Hessian, which is an estimator for the covariance matrix of the parameters if the objective function is approximately Gaussian near the best-fit μ.
  • result is the full result object returned by Optim.jl.
  • MH_model is the best-fit metallicity model.
  • disp_model is the best-fit metallicity dispersion model.

This type is implemented as a subtype of Distributions.Sampleable{Multivariate, Continuous} to enable sampling from an estimate of the likelihood / posterior distribution constructed from the invH. You can obtain N::Integer samples from the distribution with rand(R, N) where R is an instance of this type. This will return a size length(μ) x N matrix.

You can also directly obtain the per-SSP template coefficients ($r_{j,k}$ in the derivation) using the optimization results stored in a BFGSResult with calculate_coeffs.

See also

  • CompositeBFGSResult is a type that contains two instances of BFGSResult, one for the MAP and one for the MLE.
source

This can be used to obtain random samples under a multivariable Normal approximation to the posterior or used to initialize a Hamiltonian Monte Carlo (HMC) sampling process to obtain more accurate posterior samples with sample_sfh and its multi-threaded alternative tsample_sfh.

StarFormationHistories.sample_sfhFunction
sample_sfh(bfgs_result::CompositeBFGSResult, 
+           disp_model::AbstractDispersionModel)

Type for containing the maximum likelihood estimate (MLE) or maximum a posteriori (MAP) results from BFGS optimizations that use Optim.jl. Fields are as follows:

  • μ contains the final values of the fitting parameters. The mode and median methods will both return μ, but the mean of samples is not always equal to μ due to the variable transformations we perform.
  • σ contains the standard errors estimated for the parameters and is returned by the std method.
  • invH is the BFGS approximation to the inverse Hessian, which is an estimator for the covariance matrix of the parameters if the objective function is approximately Gaussian near the best-fit μ.
  • result is the full result object returned by Optim.jl.
  • MH_model is the best-fit metallicity model.
  • disp_model is the best-fit metallicity dispersion model.

This type is implemented as a subtype of Distributions.Sampleable{Multivariate, Continuous} to enable sampling from an estimate of the likelihood / posterior distribution constructed from the invH. You can obtain N::Integer samples from the distribution with rand(R, N) where R is an instance of this type. This will return a size length(μ) x N matrix.

You can also directly obtain the per-SSP template coefficients ($r_{j,k}$ in the derivation) using the optimization results stored in a BFGSResult with calculate_coeffs.

See also

  • CompositeBFGSResult is a type that contains two instances of BFGSResult, one for the MAP and one for the MLE.
source

This can be used to obtain random samples under a multivariable Normal approximation to the posterior or used to initialize a Hamiltonian Monte Carlo (HMC) sampling process to obtain more accurate posterior samples with sample_sfh and its multi-threaded alternative tsample_sfh.

StarFormationHistories.sample_sfhFunction
sample_sfh(bfgs_result::CompositeBFGSResult, 
            models::AbstractMatrix{<:Number},
            data::AbstractVector{<:Number},
            logAge::AbstractVector{<:Number},
@@ -35,7 +35,7 @@
            logAge::AbstractVector{<:Number},
            metallicities::AbstractVector{<:Number},
            Nsteps::Integer;
-           kws...)

Takes the SFH fitting result in bfgs_result and uses it to initialize the Hamiltonian Monte Carlo (HMC) sampler from DynamicHMC.jl to sample Nsteps independent draws from the posterior.

The primary method signature uses flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details, as well as stack_models that facilitates rearranging the models into this flattened format.

Arguments

  • models, data, logAge, metallicities are as in fit_sfh.
  • Nsteps is the number of Monte Carlo samples you want to draw.

Keyword Arguments

  • ϵ is the HMC step size. Convergence of the HMC samples is checked after sampling and if a convergence warning is issued, you should decrease this value.
  • reporter is a valid reporter type from DynamicHMC.jl, either NoProgressReport, ProgressMeterReport for a basic progress meter, or LogProgressReport for more detailed reporting.
  • show_convergence if true, will send sample convergence statistics to the default display.
  • rng is a Random.AbstractRNG sampler instance that will be used when generating the random samples.

Returns

A NamedTuple with two elements:

  • posterior_matrix is a Matrix with dimensions (npar, Nsteps) where npar is the number of fitting variables in the problem and is npar = length(bfgs_result.mle.μ). Each column is one independent sample.
  • tree_statistics contains convergence statistics that can be viewed with DynamicHMC.Diagnostics.summarize_tree_statistics.

See also

  • [tsample_sfh(@ref StarFormationHistories.tsample_sfh) for multi-threaded version.
source
StarFormationHistories.tsample_sfhFunction
tsample_sfh(bfgs_result::CompositeBFGSResult, 
+           kws...)

Takes the SFH fitting result in bfgs_result and uses it to initialize the Hamiltonian Monte Carlo (HMC) sampler from DynamicHMC.jl to sample Nsteps independent draws from the posterior.

The primary method signature uses flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details, as well as stack_models that facilitates rearranging the models into this flattened format.

Arguments

  • models, data, logAge, metallicities are as in fit_sfh.
  • Nsteps is the number of Monte Carlo samples you want to draw.

Keyword Arguments

  • ϵ is the HMC step size. Convergence of the HMC samples is checked after sampling and if a convergence warning is issued, you should decrease this value.
  • reporter is a valid reporter type from DynamicHMC.jl, either NoProgressReport, ProgressMeterReport for a basic progress meter, or LogProgressReport for more detailed reporting.
  • show_convergence if true, will send sample convergence statistics to the default display.
  • rng is a Random.AbstractRNG sampler instance that will be used when generating the random samples.

Returns

A NamedTuple with two elements:

  • posterior_matrix is a Matrix with dimensions (npar, Nsteps) where npar is the number of fitting variables in the problem and is npar = length(bfgs_result.mle.μ). Each column is one independent sample.
  • tree_statistics contains convergence statistics that can be viewed with DynamicHMC.Diagnostics.summarize_tree_statistics.

See also

  • [tsample_sfh(@ref StarFormationHistories.tsample_sfh) for multi-threaded version.
source
StarFormationHistories.tsample_sfhFunction
tsample_sfh(bfgs_result::CompositeBFGSResult, 
             models::AbstractMatrix{<:Number},
             data::AbstractVector{<:Number},
             logAge::AbstractVector{<:Number},
@@ -52,7 +52,7 @@
             logAge::AbstractVector{<:Number},
             metallicities::AbstractVector{<:Number},
             Nsteps::Integer;
-            kws...)

Multi-threaded version of sample_sfh; see that method's documentation for details.

Implementation

This method splits the requested number of samples Nsamples into a number of independent HMC chains, each of which has length chain_length. Initial positions for each chain are randomly drawn from the multivariate Gaussian approximation to the objective function stored in bfgs_result, approximating a warm start. Smaller values of chain_length achieve better load balancing while larger values of chain_length allow each chain more time to mix (see also Chen et al. 2020). The default value of 100 results in good mixing with 24 fitting variables and a well-scaled step length ϵ – higher dimensional problems should increase chain_length. The downside to large chain_length is poor load balancing across available threads resulting in longer runtimes.

Notes

  • if show_progress is true, we will show a progress bar that updates when individual chains complete. Currently this is not terribly useful unless the total number of chains is much greater than the number of available threads.
source

The per-SSP stellar mass coefficients ($r_{j,k}$ in the derivation) can be derived from a metallicity model, a metallicity dispersion model, the per-unique-log(age) stellar mass coefficients ($R_j$ in the derivation), and the set of SSP logarithmic ages logAge = log10(age [yr]) and metallicites using calculate_coeffs. Alternatively a CompositeBFGSResult can be fed into this method and the first three arguments will be read from the result object.

StarFormationHistories.calculate_coeffsFunction
calculate_coeffs(MH_model::AbstractMetallicityModel,
+            kws...)

Multi-threaded version of sample_sfh; see that method's documentation for details.

Implementation

This method splits the requested number of samples Nsamples into a number of independent HMC chains, each of which has length chain_length. Initial positions for each chain are randomly drawn from the multivariate Gaussian approximation to the objective function stored in bfgs_result, approximating a warm start. Smaller values of chain_length achieve better load balancing while larger values of chain_length allow each chain more time to mix (see also Chen et al. 2020). The default value of 100 results in good mixing with 24 fitting variables and a well-scaled step length ϵ – higher dimensional problems should increase chain_length. The downside to large chain_length is poor load balancing across available threads resulting in longer runtimes.

Notes

  • if show_progress is true, we will show a progress bar that updates when individual chains complete. Currently this is not terribly useful unless the total number of chains is much greater than the number of available threads.
source

The per-SSP stellar mass coefficients ($r_{j,k}$ in the derivation) can be derived from a metallicity model, a metallicity dispersion model, the per-unique-log(age) stellar mass coefficients ($R_j$ in the derivation), and the set of SSP logarithmic ages logAge = log10(age [yr]) and metallicites using calculate_coeffs. Alternatively a CompositeBFGSResult can be fed into this method and the first three arguments will be read from the result object.

StarFormationHistories.calculate_coeffsFunction
calculate_coeffs(MH_model::AbstractMetallicityModel,
                  disp_model::AbstractDispersionModel,
                  mstars::AbstractVector{<:Number}, 
                  logAge::AbstractVector{<:Number},
@@ -68,4 +68,4 @@
 true
 
 julia> length(coeffs) == n_logage * n_mh
-true
source
+true
source
diff --git a/dev/fitting/internals/index.html b/dev/fitting/internals/index.html index cd08f2c..0681af0 100644 --- a/dev/fitting/internals/index.html +++ b/dev/fitting/internals/index.html @@ -6,7 +6,7 @@ julia> coeffs = rand(length(models)); julia> composite!(C, coeffs, models); julia> C ≈ sum( coeffs .* models) -truesource
composite!(composite::AbstractVector{<:Number},
+true
source
composite!(composite::AbstractVector{<:Number},
            coeffs::AbstractVector{<:Number},
            models::AbstractMatrix{<:Number})

Updates the composite vector with the matrix-vector product of models * coeffs. This is equation 1 in Dolphin 2002, $m_i = \sum_j \, r_j \, c_{i,j}$.

Examples

julia> hist_size = (5,10);
 julia> models = reduce(hcat,rand(prod(hist_size)) for i in 1:20);
@@ -14,30 +14,30 @@
 julia> C = zeros(length(axes(models,1)));
 julia> composite!(C, coeffs, models);
 julia> C ≈ models * coeffs
-true

Notes

While the other call signature for this function more closely mirrors the natural data structure for Hess diagrams (2D matrices for composite and each entry in models), this method operates on the same data but flattened. Thus composite becomes a vector rather than a matrix and models becomes a single matrix rather than a vector of matrices. The method StarFormationHistories.stack_models is provided to stack the models into this format. This data layout enables us to use the highly optimized LinearAlgebra.mul! function to perform the matrix-vector product which typically achieves >30% speedup relative to the more natural formulation. Additionally, as mul! will typically call to a BLAS matrix-vector product function like gemv! for our use-case, we can switch out Julia's default OpenBLAS at runtime for other BLAS libraries with Julia bindings like MKL and Apple Accelerate, enabling even greater performance improvements.

source
StarFormationHistories.loglikelihoodFunction
loglikelihood(composite::AbstractArray{<:Number}, data::AbstractArray{<:Number})

Returns the logarithm of the Poisson likelihood ratio given by equation 10 in Dolphin 2002,

\[\text{ln} \, \mathscr{L} = \sum_i -m_i + n_i \times \left( 1 - \text{ln} \, \left( \frac{n_i}{m_i} \right) \right)\]

with composite being the complex Hess model diagram $m_i$ (see StarFormationHistories.composite!) and data being the observed Hess diagram $n_i$.

Performance Notes

  • ~18.57 μs for composite=Matrix{Float64}(undef,99,99) and data=similar(composite).
  • ~20 μs for composite=Matrix{Float64}(undef,99,99) and data=Matrix{Int64}(undef,99,99).
  • ~9.3 μs for composite=Matrix{Float32}(undef,99,99) and data=similar(composite).
  • ~9.6 μs for composite=Matrix{Float32}(undef,99,99) and data=Matrix{Int64}(undef,99,99).
source
loglikelihood(coeffs::AbstractVector{<:Number},
+true

Notes

While the other call signature for this function more closely mirrors the natural data structure for Hess diagrams (2D matrices for composite and each entry in models), this method operates on the same data but flattened. Thus composite becomes a vector rather than a matrix and models becomes a single matrix rather than a vector of matrices. The method StarFormationHistories.stack_models is provided to stack the models into this format. This data layout enables us to use the highly optimized LinearAlgebra.mul! function to perform the matrix-vector product which typically achieves >30% speedup relative to the more natural formulation. Additionally, as mul! will typically call to a BLAS matrix-vector product function like gemv! for our use-case, we can switch out Julia's default OpenBLAS at runtime for other BLAS libraries with Julia bindings like MKL and Apple Accelerate, enabling even greater performance improvements.

source
StarFormationHistories.loglikelihoodFunction
loglikelihood(composite::AbstractArray{<:Number}, data::AbstractArray{<:Number})

Returns the logarithm of the Poisson likelihood ratio given by equation 10 in Dolphin 2002,

\[\text{ln} \, \mathscr{L} = \sum_i -m_i + n_i \times \left( 1 - \text{ln} \, \left( \frac{n_i}{m_i} \right) \right)\]

with composite being the complex Hess model diagram $m_i$ (see StarFormationHistories.composite!) and data being the observed Hess diagram $n_i$.

Performance Notes

  • ~18.57 μs for composite=Matrix{Float64}(undef,99,99) and data=similar(composite).
  • ~20 μs for composite=Matrix{Float64}(undef,99,99) and data=Matrix{Int64}(undef,99,99).
  • ~9.3 μs for composite=Matrix{Float32}(undef,99,99) and data=similar(composite).
  • ~9.6 μs for composite=Matrix{Float32}(undef,99,99) and data=Matrix{Int64}(undef,99,99).
source
loglikelihood(coeffs::AbstractVector{<:Number},
               models::AbstractVector{T},
               data::AbstractMatrix{<:Number}) where T <: AbstractMatrix{<:Number}
 loglikelihood(coeffs::AbstractVector{<:Number},
               models::AbstractMatrix{<:Number},
-              data::AbstractVector{<:Number})

Returns the logarithm of the Poisson likelihood ratio, but constructs the complex Hess diagram model as sum(coeffs .* models) rather than taking composite directly as an argument. Second call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source
StarFormationHistories.∇loglikelihoodFunction
∇loglikelihood(model::AbstractArray{<:Number},
+              data::AbstractVector{<:Number})

Returns the logarithm of the Poisson likelihood ratio, but constructs the complex Hess diagram model as sum(coeffs .* models) rather than taking composite directly as an argument. Second call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source
StarFormationHistories.∇loglikelihoodFunction
∇loglikelihood(model::AbstractArray{<:Number},
                composite::AbstractArray{<:Number},
-               data::AbstractArray{<:Number})

Returns the partial derivative of the logarithm of the Poisson likelihood ratio (StarFormationHistories.loglikelihood) with respect to the coefficient $r_j$ on the provided model. If the complex Hess diagram model is $m_i = \sum_j \, r_j \, c_{i,j}$, then model is $c_{i,j}$, and this function computes the partial derivative of $\text{log} \, \mathscr{L}$ with respect to the coefficient $r_j$. This is given by equation 21 in Dolphin 2002,

\[\frac{\partial \, \text{log} \, \mathscr{L}}{\partial \, r_j} = \sum_i c_{i,j} \left( \frac{n_i}{m_i} - 1 \right)\]

where $n_i$ is bin $i$ of the observed Hess diagram data.

Performance Notes

  • ~4.1 μs for model, composite, data all being Matrix{Float64}(undef,99,99).
  • ~1.3 μs for model, composite, data all being Matrix{Float32}(undef,99,99).
source
∇loglikelihood(models::AbstractVector{T},
+               data::AbstractArray{<:Number})

Returns the partial derivative of the logarithm of the Poisson likelihood ratio (StarFormationHistories.loglikelihood) with respect to the coefficient $r_j$ on the provided model. If the complex Hess diagram model is $m_i = \sum_j \, r_j \, c_{i,j}$, then model is $c_{i,j}$, and this function computes the partial derivative of $\text{log} \, \mathscr{L}$ with respect to the coefficient $r_j$. This is given by equation 21 in Dolphin 2002,

\[\frac{\partial \, \text{log} \, \mathscr{L}}{\partial \, r_j} = \sum_i c_{i,j} \left( \frac{n_i}{m_i} - 1 \right)\]

where $n_i$ is bin $i$ of the observed Hess diagram data.

Performance Notes

  • ~4.1 μs for model, composite, data all being Matrix{Float64}(undef,99,99).
  • ~1.3 μs for model, composite, data all being Matrix{Float32}(undef,99,99).
source
∇loglikelihood(models::AbstractVector{T},
                composite::AbstractMatrix{<:Number},
                data::AbstractMatrix{<:Number}) where T <: AbstractMatrix{<:Number}
 ∇loglikelihood(models::AbstractMatrix{<:Number},
                composite::AbstractVector{<:Number},
-               data::AbstractVector{<:Number})

Computes the gradient of the logarithm of the Poisson likelihood ratio with respect to the coefficients by calling the single-model ∇loglikelihood for every model in models. Second call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source
∇loglikelihood(coeffs::AbstractVector{<:Number},
+               data::AbstractVector{<:Number})

Computes the gradient of the logarithm of the Poisson likelihood ratio with respect to the coefficients by calling the single-model ∇loglikelihood for every model in models. Second call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source
∇loglikelihood(coeffs::AbstractVector{<:Number},
                models::AbstractVector{T},
                data::AbstractMatrix{<:Number}) where T <: AbstractMatrix{<:Number}
 ∇loglikelihood(coeffs::AbstractVector{<:Number},
                models::AbstractMatrix{<:Number},
-               data::AbstractVector{<:Number})

Forms the composite matrix from coefficients coeffs and model templates models and returns the gradient of the loglikelihood with respect to the coefficients. Second call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source
StarFormationHistories.∇loglikelihood!Function
 ∇loglikelihood!(G::AbstractVector,
+               data::AbstractVector{<:Number})

Forms the composite matrix from coefficients coeffs and model templates models and returns the gradient of the loglikelihood with respect to the coefficients. Second call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source
StarFormationHistories.∇loglikelihood!Function
 ∇loglikelihood!(G::AbstractVector,
                  composite::AbstractMatrix{<:Number},
                  models::AbstractVector{S},
-                 data::AbstractMatrix{<:Number}) where S <: AbstractMatrix{<:Number}

Efficiently computes the gradient of StarFormationHistories.loglikelihood with respect to all coefficients by updating G with the gradient. This will overwrite composite with the result of 1 .- (data ./ composite) so it shouldn't be reused after being passed to this function.

Arguments

  • G::AbstractVector is the vector that will be mutated in-place with the computed gradient values.
  • models::AbstractVector{<:AbstractMatrix{<:Number}} is the vector of matrices giving the model Hess diagrams.
  • composite::AbstractMatrix{<:Number} is a matrix that contains the composite model sum(coeffs .* models).
  • data::AbstractMatrix{<:Number} contains the observed Hess diagram that is being fit.
source
G = ∇loglikelihood!(G::AbstractVector,
+                 data::AbstractMatrix{<:Number}) where S <: AbstractMatrix{<:Number}

Efficiently computes the gradient of StarFormationHistories.loglikelihood with respect to all coefficients by updating G with the gradient. This will overwrite composite with the result of 1 .- (data ./ composite) so it shouldn't be reused after being passed to this function.

Arguments

  • G::AbstractVector is the vector that will be mutated in-place with the computed gradient values.
  • models::AbstractVector{<:AbstractMatrix{<:Number}} is the vector of matrices giving the model Hess diagrams.
  • composite::AbstractMatrix{<:Number} is a matrix that contains the composite model sum(coeffs .* models).
  • data::AbstractMatrix{<:Number} contains the observed Hess diagram that is being fit.
source
G = ∇loglikelihood!(G::AbstractVector,
                     composite::AbstractVector{<:Number},
                     models::AbstractMatrix{<:Number},
-                    data::AbstractVector{<:Number})

Updates and returns G with the gradient of the loglikelihood with respect to all coefficients. This call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source
StarFormationHistories.fg!Function
fg!(F, G, MH_model0::AbstractMetallicityModel,
+                    data::AbstractVector{<:Number})

Updates and returns G with the gradient of the loglikelihood with respect to all coefficients. This call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source
StarFormationHistories.fg!Function
fg!(F, G, MH_model0::AbstractMetallicityModel,
     disp_model0::AbstractDispersionModel,
     variables::AbstractVector{<:Number},
     models::Union{AbstractMatrix{<:Number},
@@ -45,7 +45,7 @@
     data::Union{AbstractVector{<:Number}, AbstractMatrix{<:Number}},
     composite::Union{AbstractVector{<:Number}, AbstractMatrix{<:Number}},
     logAge::AbstractVector{<:Number},
-    metallicities::AbstractVector{<:Number})

Main function that differs between AMR and MZR models that accounts for the difference in the gradient formulations between models. F and G mirror the Optim.jl interface for computing the objective and gradient in a single function to make use of common intermediate computations.

Arguments

  • F controls whether the objective is being requested. If !isnothing(F), the negative log likelihood will be returned from fg!.
  • G controls whether the gradient of the objective with respect to the variables is being requested. If !isnothing(G), G will be updated in-place with the gradient of the negative log likelihood with respect to the fitting parameters variables.
  • MH_model0 is an instance of a concrete subtype of AbstractMetallicityModel (e.g., PowerLawMZR) that specifies the metallicity evolution model to use. The parameters contained in MH_model0 are used as initial parameters to begin the optimization in fit_sfh, but are not used internally in fg! – new instances are constructed from variables instead.
  • disp_model0 is an instance of a concrete subtype of AbstractDispersionModel (e.g., GaussianDispersion) that specifies the PDF of the metallicities of stars forming at fixed time. The parameters contained in disp_model0 are used as initial parameters to begin the optimization in fit_sfh, but are not used internally in fg! – new instances are constructed from variables instead.
  • variables are the fitting parameters, including free and fixed parameters. This vector is split into stellar mass coefficients R_j, metallicity model parameters, and dispersion model parameters, and so must contain all relevant fittable parameters, even those that are to be fixed during the solve.
  • models are the template Hess diagrams for the SSPs that compose the observed Hess diagram.
  • data is the Hess diagram for the observed data.
  • composite is the pre-allocated array in which to store the complex Hess diagram model. Must have same shape as data.
  • logAge::AbstractVector{<:Number} is the vector containing the effective ages of the stellar populations used to create the templates in models, in units of log10(age [yr]). For example, if a population has an age of 1 Myr, its entry in logAge should be log10(10^6) = 6.0.
  • metallicities::AbstractVector{<:Number} is the vector containing the effective metallicities of the stellar populations used to create the templates in models. These should be logarithmic abundances like [M/H] or [Fe/H]. There are some notes on the Wikipedia that might be useful.

Returns

  • Negative log likelihood if !isnothing(F).
source
StarFormationHistories.truncate_relweightsFunction
keep_idx::Vector{Int} =
+    metallicities::AbstractVector{<:Number})

Main function that differs between AMR and MZR models that accounts for the difference in the gradient formulations between models. F and G mirror the Optim.jl interface for computing the objective and gradient in a single function to make use of common intermediate computations.

Arguments

  • F controls whether the objective is being requested. If !isnothing(F), the negative log likelihood will be returned from fg!.
  • G controls whether the gradient of the objective with respect to the variables is being requested. If !isnothing(G), G will be updated in-place with the gradient of the negative log likelihood with respect to the fitting parameters variables.
  • MH_model0 is an instance of a concrete subtype of AbstractMetallicityModel (e.g., PowerLawMZR) that specifies the metallicity evolution model to use. The parameters contained in MH_model0 are used as initial parameters to begin the optimization in fit_sfh, but are not used internally in fg! – new instances are constructed from variables instead.
  • disp_model0 is an instance of a concrete subtype of AbstractDispersionModel (e.g., GaussianDispersion) that specifies the PDF of the metallicities of stars forming at fixed time. The parameters contained in disp_model0 are used as initial parameters to begin the optimization in fit_sfh, but are not used internally in fg! – new instances are constructed from variables instead.
  • variables are the fitting parameters, including free and fixed parameters. This vector is split into stellar mass coefficients R_j, metallicity model parameters, and dispersion model parameters, and so must contain all relevant fittable parameters, even those that are to be fixed during the solve.
  • models are the template Hess diagrams for the SSPs that compose the observed Hess diagram.
  • data is the Hess diagram for the observed data.
  • composite is the pre-allocated array in which to store the complex Hess diagram model. Must have same shape as data.
  • logAge::AbstractVector{<:Number} is the vector containing the effective ages of the stellar populations used to create the templates in models, in units of log10(age [yr]). For example, if a population has an age of 1 Myr, its entry in logAge should be log10(10^6) = 6.0.
  • metallicities::AbstractVector{<:Number} is the vector containing the effective metallicities of the stellar populations used to create the templates in models. These should be logarithmic abundances like [M/H] or [Fe/H]. There are some notes on the Wikipedia that might be useful.

Returns

  • Negative log likelihood if !isnothing(F).
source
StarFormationHistories.truncate_relweightsFunction
keep_idx::Vector{Int} =
     truncate_relweights(relweightsmin::Number,
                         relweights::AbstractVector{<:Number},
                         logAge::AbstractVector{<:Number})

Method to truncate an isochrone grid with log10(age [yr]) values logAge and relative weights relweights derived from a hierarchical metallicity evolution model to only include template models with relweights greater than relweightsmin times the maximum relative weight for each unique entry in logAge. The input vectors are the same as those for StarFormationHistories.fixed_amr, which includes more information. Returns a vector of the indices into relweights and logAge of the template models whose relative weights are significant given the provided relweightsmin.

Examples

When using a fixed input age-metallicity relation as enabled by, for example, StarFormationHistories.fixed_amr, only the star formation rate (or total stellar mass) coefficients need to be fit, as the metallicity distribution is no longer a free parameter in the model. As such, the relative weights of each model with identical logAge but different metallicities only need to be computed once at the start of the optimization. As the metallicity distribution is not a free parameter, it is also possible to truncate the list of models to only those that contribute significantly to the final composite model to improve runtime performance. That is what this method does.

A simple isochrone grid will be two-dimensional, encompassing age and metallicity. Consider a subset of the model grid with the same age such that unique(logAge) = [10.0] but a series of different metallicities, metallicities = -2.5:0.25:0. If we model the metallicity distribution function for this age as having a mean [M/H] of -2.0 and a Gaussian spread of 0.2 dex, then the relative weights of these models can be approximated as

import Distributions: Normal, pdf
@@ -65,4 +65,4 @@
  9.622444440364979e-23

Several of these models with very low relative weights are unlikely to contribute significantly to the final composite model. We can select out only the significant ones with, say, relative weights greater than 10% of the maximum as StarFormationHistories.truncate_relweights(0.1, relweights, fill(10.0,length(metallicities))) which will return indices into relweights whose values are greater than 0.1 * maximum(relweights) = 0.04988954088848224,

3-element Vector{Int64}:
  2
  3
- 4

which correspond to relweights[2,3,4] = [ 0.2284109622221623, 0.4988954088848224, 0.2284109622221623 ]. If we use only these 3 templates in the fit, instead of the original 11, we will achieve a speedup of almost 4x with a minor loss in precision which, in most cases, will be less than the numerical uncertainties on the individual star formation rate parameters. However, as fits of these sort are naturally quite fast, we recommend use of this type of truncation only in applications where many fits are required (e.g., Monte Carlo experiments). For most applications, this level of optimization is not necessary.

source
StarFormationHistories.calculate_edgesFunction
calculate_edges(edges, xlim, ylim, nbins, xwidth, ywidth)

Function to calculate the bin edges for 2D histograms. Returns (xbins, ybins) with both entries being ranges.

Keyword Arguments

  • edges is a tuple of ranges defining the left-side edges of the bins along the x-axis (edges[1]) and the y-axis (edges[2]). Example: (-1.0:0.1:1.5, 22:0.1:27.2). If edges is provided, it will simply be returned.
  • xlim is a length-2 indexable object (e.g., a Vector{Float64} or NTuple{2,Float64)) giving the lower and upper bounds on the x-axis corresponding to the provided colors array. Example: [-1.0, 1.5]. This is only used if edges==nothing.
  • ylim is like xlim but for the y-axis corresponding to the provided mags array. Example [25, 20]. This is only used if edges==nothing.
  • nbins::NTuple{2,<:Integer} is a 2-tuple of integers providing the number of bins to use along the x- and y-axes. This is only used if edges==nothing.
  • xwidth is the bin width along the x-axis for the colors array. This is only used if edges==nothing and nbins==nothing. Example: 0.1.
  • ywidth is like xwidth but for the y-axis corresponding to the provided mags array. Example: 0.1.
source
+ 4

which correspond to relweights[2,3,4] = [ 0.2284109622221623, 0.4988954088848224, 0.2284109622221623 ]. If we use only these 3 templates in the fit, instead of the original 11, we will achieve a speedup of almost 4x with a minor loss in precision which, in most cases, will be less than the numerical uncertainties on the individual star formation rate parameters. However, as fits of these sort are naturally quite fast, we recommend use of this type of truncation only in applications where many fits are required (e.g., Monte Carlo experiments). For most applications, this level of optimization is not necessary.

source
StarFormationHistories.calculate_edgesFunction
calculate_edges(edges, xlim, ylim, nbins, xwidth, ywidth)

Function to calculate the bin edges for 2D histograms. Returns (xbins, ybins) with both entries being ranges.

Keyword Arguments

  • edges is a tuple of ranges defining the left-side edges of the bins along the x-axis (edges[1]) and the y-axis (edges[2]). Example: (-1.0:0.1:1.5, 22:0.1:27.2). If edges is provided, it will simply be returned.
  • xlim is a length-2 indexable object (e.g., a Vector{Float64} or NTuple{2,Float64)) giving the lower and upper bounds on the x-axis corresponding to the provided colors array. Example: [-1.0, 1.5]. This is only used if edges==nothing.
  • ylim is like xlim but for the y-axis corresponding to the provided mags array. Example [25, 20]. This is only used if edges==nothing.
  • nbins::NTuple{2,<:Integer} is a 2-tuple of integers providing the number of bins to use along the x- and y-axes. This is only used if edges==nothing.
  • xwidth is the bin width along the x-axis for the colors array. This is only used if edges==nothing and nbins==nothing. Example: 0.1.
  • ywidth is like xwidth but for the y-axis corresponding to the provided mags array. Example: 0.1.
source
diff --git a/dev/fitting/kernels/index.html b/dev/fitting/kernels/index.html index 9eeb092..2d04344 100644 --- a/dev/fitting/kernels/index.html +++ b/dev/fitting/kernels/index.html @@ -1,2 +1,2 @@ -Kernels · StarFormationHistories.jl

Kernels

One of the most important parts of our method is modelling the 2-D probability distribution of observing a star with particular intrinsic magnitudes in the Hess diagram space. We refer to these 2-D probability distributions as "kernels" throughout, as our process is conceptually similar to constructing a kernel density estimate. This document describes how these kernels are constructed and what assumptions are made to do so.

Our implementation is underpinned by the assumption that all kernels can be described the family of 2-D Gaussian probability distributions. To derive these 2-D distributions, we begin with 1-D distributions for each photometric filter used in the analysis.

We assume random photometric errors in the observed photometric catalog can be approximated as Gaussian. This is generally a good assumption for the space-based imaging used for resolved SFHs (e.g., HST and JWST) as long as the photometric completeness is high (greater than, perhaps, 50%). At low completeness, the error distributions become skewed and would be better modelled by something like a skew-normal distribution, which we do not presently consider.

We additionally require that the user can construct functions for each observed photomeric filter which, given a star's input intrinsic magnitude in a single filter $m_i$, return reliable measures for the average single-band photometric error; $\sigma(m_i)$. Assuming that the photometric errors in each band can be modelled as independent, we can derive, for a given $m_i$, the probability distribution of the observed magnitude $m_o$. We therefore have the 1-D probability distributions $P(m_o|m_i)$ for all filters.

In the case that imaging in three photometric filters are available and are used to construct a Hess diagram with a magnitude on the y-axis that does not appear on the x-axis (e.g., y=$R$ and x=$B-V$), then there is no covariance between the x and y axes and the 2-D Gaussian kernel is fully separable. We call this the "non-covariant" case.

In order to inject the kernel into the model Hess diagram, it must be integrated across the grid that defines the discretization. The integral of the non-covariant kernel across the Hess diagram pixel grid is entirely analytic, making evaluation easy and efficient. By integrating the kernel over the grid, the numerical precision is nearly independent of the grid resolution, which is not true of Monte Carlo (MC) based template construction algorithms.

In the case that imaging in only two photometric filters are available and are used to construct a Hess diagram with a magnitude on the y-axis that does appear on the x-axis (e.g., y=$B$ and x=$B-V$), then there is covariance between x and y axes. The initial implementation of this method neglected this covariance, and while the result was not catastrophic, it was certainly suboptimal. We now model the covariance explicitly. The covariance pattern does not permit a fully analytic integral as in the non-covariant case; instead, the inner integral (over, say, the x-axis) can be calculated analytically but the outer integral cannot. We therefore use Gauss-Legendre quadtrature to finish the integration over the second axis.

The types representing these kernels are not part of our public API, but we provide an example script examples/templates/kernels_example.jl which illustrates the performance of these kernels. The output of this script is reproduced and explained below.

Consider a star taken from an isochrone with intrinsic magnitudes $B=20$, $V=19$, and $R=18$ with expected random photometric errors $\sigma_B=0.02$, $\sigma_V=0.03$, and $\sigma_R=0.05$. Our example randomly samples a large population of possible observed magnitudes given these intrinsic properties and compares the distribution of the MC sample to our kernels.

We consider first the non-covariant case:

noncovariant

which has the expected, non-rotated morphology.

We next consider the covariant case with the covariance pattern y=$B$ and x=$B-V$:

covariantm1

which we can see correctly models the covariance pattern.

And finally, the covariant case with the covariance pattern y=$V$ and x=$B-V$: covariant1

+Kernels · StarFormationHistories.jl

Kernels

One of the most important parts of our method is modelling the 2-D probability distribution of observing a star with particular intrinsic magnitudes in the Hess diagram space. We refer to these 2-D probability distributions as "kernels" throughout, as our process is conceptually similar to constructing a kernel density estimate. This document describes how these kernels are constructed and what assumptions are made to do so.

Our implementation is underpinned by the assumption that all kernels can be described the family of 2-D Gaussian probability distributions. To derive these 2-D distributions, we begin with 1-D distributions for each photometric filter used in the analysis.

We assume random photometric errors in the observed photometric catalog can be approximated as Gaussian. This is generally a good assumption for the space-based imaging used for resolved SFHs (e.g., HST and JWST) as long as the photometric completeness is high (greater than, perhaps, 50%). At low completeness, the error distributions become skewed and would be better modelled by something like a skew-normal distribution, which we do not presently consider.

We additionally require that the user can construct functions for each observed photomeric filter which, given a star's input intrinsic magnitude in a single filter $m_i$, return reliable measures for the average single-band photometric error; $\sigma(m_i)$. Assuming that the photometric errors in each band can be modelled as independent, we can derive, for a given $m_i$, the probability distribution of the observed magnitude $m_o$. We therefore have the 1-D probability distributions $P(m_o|m_i)$ for all filters.

In the case that imaging in three photometric filters are available and are used to construct a Hess diagram with a magnitude on the y-axis that does not appear on the x-axis (e.g., y=$R$ and x=$B-V$), then there is no covariance between the x and y axes and the 2-D Gaussian kernel is fully separable. We call this the "non-covariant" case.

In order to inject the kernel into the model Hess diagram, it must be integrated across the grid that defines the discretization. The integral of the non-covariant kernel across the Hess diagram pixel grid is entirely analytic, making evaluation easy and efficient. By integrating the kernel over the grid, the numerical precision is nearly independent of the grid resolution, which is not true of Monte Carlo (MC) based template construction algorithms.

In the case that imaging in only two photometric filters are available and are used to construct a Hess diagram with a magnitude on the y-axis that does appear on the x-axis (e.g., y=$B$ and x=$B-V$), then there is covariance between x and y axes. The initial implementation of this method neglected this covariance, and while the result was not catastrophic, it was certainly suboptimal. We now model the covariance explicitly. The covariance pattern does not permit a fully analytic integral as in the non-covariant case; instead, the inner integral (over, say, the x-axis) can be calculated analytically but the outer integral cannot. We therefore use Gauss-Legendre quadtrature to finish the integration over the second axis.

The types representing these kernels are not part of our public API, but we provide an example script examples/templates/kernels_example.jl which illustrates the performance of these kernels. The output of this script is reproduced and explained below.

Consider a star taken from an isochrone with intrinsic magnitudes $B=20$, $V=19$, and $R=18$ with expected random photometric errors $\sigma_B=0.02$, $\sigma_V=0.03$, and $\sigma_R=0.05$. Our example randomly samples a large population of possible observed magnitudes given these intrinsic properties and compares the distribution of the MC sample to our kernels.

We consider first the non-covariant case:

noncovariant

which has the expected, non-rotated morphology.

We next consider the covariant case with the covariance pattern y=$B$ and x=$B-V$:

covariantm1

which we can see correctly models the covariance pattern.

And finally, the covariant case with the covariance pattern y=$V$ and x=$B-V$: covariant1

diff --git a/dev/fitting/unconstrained/index.html b/dev/fitting/unconstrained/index.html index 60d085f..b71527a 100644 --- a/dev/fitting/unconstrained/index.html +++ b/dev/fitting/unconstrained/index.html @@ -5,29 +5,29 @@ 9-element Vector{Float64}: ... julia> sum(x0) -4.99... # Close to `normalize_value`.source

When it comes to performing the optimization, the simplest method we offer is StarFormationHistories.fit_templates_lbfgsb. This will optimize one coefficient per template; there is no overarching metallicity evolution or other constraint, besides that the stellar masses of the populations cannot be negative. This performs a maximum likelihood optimization with the bounded quasi-Newton LBFGS method as implemented in L-BFGS-B and wrapped in LBFGS.jl with analytic gradients. It is fast and converges fairly reliably, even when the initial guess is not particularly close to the maximum likelihood estimate. It provides no uncertainty estimation. It is normal for some of the coefficients to converge to zero.

StarFormationHistories.fit_templates_lbfgsbFunction
(-logL, coeffs) = 
+4.99... # Close to `normalize_value`.
source

When it comes to performing the optimization, the simplest method we offer is StarFormationHistories.fit_templates_lbfgsb. This will optimize one coefficient per template; there is no overarching metallicity evolution or other constraint, besides that the stellar masses of the populations cannot be negative. This performs a maximum likelihood optimization with the bounded quasi-Newton LBFGS method as implemented in L-BFGS-B and wrapped in LBFGS.jl with analytic gradients. It is fast and converges fairly reliably, even when the initial guess is not particularly close to the maximum likelihood estimate. It provides no uncertainty estimation. It is normal for some of the coefficients to converge to zero.

StarFormationHistories.fit_templates_lbfgsbFunction
(-logL, coeffs) = 
 fit_templates_lbfgsb(models::AbstractVector{T},
                      data::AbstractMatrix{<:Number};
                      x0::AbstractVector{<:Number} = ones(S,length(models)),
                      factr::Number=1e-12,
                      pgtol::Number=1e-5,
                      iprint::Integer=0,
-                     kws...) where {S <: Number, T <: AbstractMatrix{S}}

Finds the coefficients coeffs that maximize the Poisson likelihood ratio (equations 7–10 in Dolphin 2002) for the composite Hess diagram model sum(models .* coeffs) given the provided templates models and the observed Hess diagram data using the box-constrained LBFGS method provided by LBFGSB.jl.

Arguments

  • models::AbstractVector{AbstractMatrix{<:Number}}: the list of template Hess diagrams for the simple stellar populations (SSPs) being considered; all must have the same size.
  • data::AbstractMatrix{<:Number}: the observed Hess diagram; must match the size of the templates contained in models.

Keyword Arguments

  • x0: The vector of initial guesses for the stellar mass coefficients. You should basically always be calculating and passing this keyword argument; we provide StarFormationHistories.construct_x0 to prepare x0 assuming constant star formation rate, which is typically a good initial guess.
  • factr::Number: Keyword argument passed to LBFGSB.lbfgsb; essentially a relative tolerance for convergence based on the inter-iteration change in the objective function.
  • pgtol::Number: Keyword argument passed to LBFGSB.lbfgsb; essentially a relative tolerance for convergence based on the inter-iteration change in the projected gradient of the objective.
  • iprint::Integer: Keyword argument passed to LBFGSB.lbfgsb controlling how much information is printed to the terminal. Setting to 1 can sometimes be helpful to diagnose convergence issues. Setting to -1 will disable printing.

Other kws... are passed to LBFGSB.lbfgsb.

Returns

  • -logL::Number: the minimum negative log-likelihood found by the optimizer.
  • coeffs::Vector{<:Number}: the maximum likelihood estimate for the coefficient vector.

Notes

  • It can be helpful to normalize your models to contain realistic total stellar masses to aid convergence stability; for example, if the total stellar mass of your population is 10^7 solar masses, then you might normalize your templates to contain 10^3 solar masses. If you are using partial_cmd_smooth to construct the templates, you can specify this normalization via the normalize_value keyword.
source
fit_templates_lbfgsb(models::AbstractMatrix{S},
+                     kws...) where {S <: Number, T <: AbstractMatrix{S}}

Finds the coefficients coeffs that maximize the Poisson likelihood ratio (equations 7–10 in Dolphin 2002) for the composite Hess diagram model sum(models .* coeffs) given the provided templates models and the observed Hess diagram data using the box-constrained LBFGS method provided by LBFGSB.jl.

Arguments

  • models::AbstractVector{AbstractMatrix{<:Number}}: the list of template Hess diagrams for the simple stellar populations (SSPs) being considered; all must have the same size.
  • data::AbstractMatrix{<:Number}: the observed Hess diagram; must match the size of the templates contained in models.

Keyword Arguments

  • x0: The vector of initial guesses for the stellar mass coefficients. You should basically always be calculating and passing this keyword argument; we provide StarFormationHistories.construct_x0 to prepare x0 assuming constant star formation rate, which is typically a good initial guess.
  • factr::Number: Keyword argument passed to LBFGSB.lbfgsb; essentially a relative tolerance for convergence based on the inter-iteration change in the objective function.
  • pgtol::Number: Keyword argument passed to LBFGSB.lbfgsb; essentially a relative tolerance for convergence based on the inter-iteration change in the projected gradient of the objective.
  • iprint::Integer: Keyword argument passed to LBFGSB.lbfgsb controlling how much information is printed to the terminal. Setting to 1 can sometimes be helpful to diagnose convergence issues. Setting to -1 will disable printing.

Other kws... are passed to LBFGSB.lbfgsb.

Returns

  • -logL::Number: the minimum negative log-likelihood found by the optimizer.
  • coeffs::Vector{<:Number}: the maximum likelihood estimate for the coefficient vector.

Notes

  • It can be helpful to normalize your models to contain realistic total stellar masses to aid convergence stability; for example, if the total stellar mass of your population is 10^7 solar masses, then you might normalize your templates to contain 10^3 solar masses. If you are using partial_cmd_smooth to construct the templates, you can specify this normalization via the normalize_value keyword.
source
fit_templates_lbfgsb(models::AbstractMatrix{S},
                      data::AbstractVector{<:Number};
                      x0::AbstractVector{<:Number} = ones(S,size(models,2)),
                      factr::Number=1e-12,
                      pgtol::Number=1e-5,
                      iprint::Integer=0,
-                     kws...) where S <: Number

This call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source

This method simply minimizes the negative logarithm of the Poisson likelihood ratio (Equation 10 in Dolphin 2002),

\[- \text{ln} \, \mathscr{L} = \sum_i m_i - n_i \times \left( 1 - \text{ln} \, \left( \frac{n_i}{m_i} \right) \right)\]

where $m_i$ is bin $i$ of the complex model and $n_i$ is bin $i$ of the observed Hess diagram; this can therefore be thought of as computing the maximum likelihood estimate.

We also provide StarFormationHistories.fit_templates_fast, which is the fastest method we offer for deriving a maximum likelihood estimate for the type of model described above.

StarFormationHistories.fit_templates_fastFunction
(coeffs::Vector{::eltype(x0)}, result::Optim.MultivariateOptimizationResults) =
+                     kws...) where S <: Number

This call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source

This method simply minimizes the negative logarithm of the Poisson likelihood ratio (Equation 10 in Dolphin 2002),

\[- \text{ln} \, \mathscr{L} = \sum_i m_i - n_i \times \left( 1 - \text{ln} \, \left( \frac{n_i}{m_i} \right) \right)\]

where $m_i$ is bin $i$ of the complex model and $n_i$ is bin $i$ of the observed Hess diagram; this can therefore be thought of as computing the maximum likelihood estimate.

We also provide StarFormationHistories.fit_templates_fast, which is the fastest method we offer for deriving a maximum likelihood estimate for the type of model described above.

StarFormationHistories.fit_templates_fastFunction
(coeffs::Vector{::eltype(x0)}, result::Optim.MultivariateOptimizationResults) =
 fit_templates_fast(models::AbstractVector{T},
                    data::AbstractMatrix{<:Number};
                    x0::AbstractVector{<:Number} = ones(S,length(models)),
                    kws...)
-                   where {S <: Number, T <: AbstractMatrix{S}}

Finds only the maximum likelihood estimate (MLE) for the coefficients coeffs given the provided data such that the best-fit composite Hess diagram model is sum(models .* coeffs). This is a simplification of the main fit_templates function, which will return the MLE as well as the maximum a posteriori estimate, and further supports uncertainty quantification. For additional details on arguments to this method, see the documentation for fit_templates.

This method optimizes parameters θ such that coeffs = θ.^2 – this allows for faster convergence than both the fit_templates_lbfgsb method, which does not use a variable transformation, and the logarithmic transformation used in fit_templates. However, the inverse Hessian is not useful for uncertainty estimation under this transformation. As such this method only returns the MLE for coeffs as a vector and the result object returned by Optim.optimize. While this method offers fewer features than fit_templates, this method's runtime is typically half as long (or less). As such, this method is recommended for use in performance-sensitive applications like hierarchical models or hyperparameter estimation where the additional features of fit_templates are unnecessary. In these applications, the value of the objective function at the derived MLE is typically desired as well; this can be obtained the from result::Optim.MultivariateOptimizationResults object as Optim.minimum(result). Note that this will return the negative loglikelihood, which is what is minimized in this application.

Notes

  1. By passing additional convergence keyword arguments supported by Optim.Options (see this guide), it is possible to converge to the MLE in fewer than 30 iterations with fewer than 100 calls to the likelihood and gradient methods. For example, the main convergence criterion is typically the magnitude of the gradient vector, which by default is g_abstol=1e-8, terminating the optimization when the magnitude of the gradient is less than 1e-8. We find results are typically sufficiently accurate with g_abstol=1e-3, which often uses half as many objective evaluations as the default value.
source
fit_templates_fast(models::AbstractMatrix{S},
+                   where {S <: Number, T <: AbstractMatrix{S}}

Finds only the maximum likelihood estimate (MLE) for the coefficients coeffs given the provided data such that the best-fit composite Hess diagram model is sum(models .* coeffs). This is a simplification of the main fit_templates function, which will return the MLE as well as the maximum a posteriori estimate, and further supports uncertainty quantification. For additional details on arguments to this method, see the documentation for fit_templates.

This method optimizes parameters θ such that coeffs = θ.^2 – this allows for faster convergence than both the fit_templates_lbfgsb method, which does not use a variable transformation, and the logarithmic transformation used in fit_templates. However, the inverse Hessian is not useful for uncertainty estimation under this transformation. As such this method only returns the MLE for coeffs as a vector and the result object returned by Optim.optimize. While this method offers fewer features than fit_templates, this method's runtime is typically half as long (or less). As such, this method is recommended for use in performance-sensitive applications like hierarchical models or hyperparameter estimation where the additional features of fit_templates are unnecessary. In these applications, the value of the objective function at the derived MLE is typically desired as well; this can be obtained the from result::Optim.MultivariateOptimizationResults object as Optim.minimum(result). Note that this will return the negative loglikelihood, which is what is minimized in this application.

Notes

  1. By passing additional convergence keyword arguments supported by Optim.Options (see this guide), it is possible to converge to the MLE in fewer than 30 iterations with fewer than 100 calls to the likelihood and gradient methods. For example, the main convergence criterion is typically the magnitude of the gradient vector, which by default is g_abstol=1e-8, terminating the optimization when the magnitude of the gradient is less than 1e-8. We find results are typically sufficiently accurate with g_abstol=1e-3, which often uses half as many objective evaluations as the default value.
source
fit_templates_fast(models::AbstractMatrix{S},
                    data::AbstractVector{<:Number};
                    x0::AbstractVector{<:Number} = ones(S,size(models,2)),
                    kws...)
-                   where S <: Number

This call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source

Posterior Sampling: MCMC

For low-dimensional problems, Markov Chain Monte Carlo (MCMC) methods can be an efficient way to sample the posterior and obtain uncertainty estimates on the fitting coefficients $r_j$. We provide StarFormationHistories.mcmc_sample for this purpose. Internally this uses the multi-threaded affine-invariant MCMC sampler from KissMCMC.jl to perform the sampling, which is based on the same algorithm as Python's emcee (specifically, their emcee.moves.StretchMove). There are other MCMC packages like AdvancedMH.jl that offer additional features like distributed execution.

StarFormationHistories.mcmc_sampleFunction
result::MCMCChains.Chains =
+                   where S <: Number

This call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source

Posterior Sampling: MCMC

For low-dimensional problems, Markov Chain Monte Carlo (MCMC) methods can be an efficient way to sample the posterior and obtain uncertainty estimates on the fitting coefficients $r_j$. We provide StarFormationHistories.mcmc_sample for this purpose. Internally this uses the multi-threaded affine-invariant MCMC sampler from KissMCMC.jl to perform the sampling, which is based on the same algorithm as Python's emcee (specifically, their emcee.moves.StretchMove). There are other MCMC packages like AdvancedMH.jl that offer additional features like distributed execution.

StarFormationHistories.mcmc_sampleFunction
result::MCMCChains.Chains =
 mcmc_sample(models::AbstractVector{<:AbstractMatrix{T}},
             data::AbstractMatrix{S},
             x0::Union{AbstractVector{<:AbstractVector{<:Number}}, AbstractMatrix{<:Number}},
@@ -47,7 +47,7 @@
 nsteps = 400
 x0 = rand(nwalkers, length(coeffs)) # Initial walker positions
 result = mcmc_sample(models, data, x0, nwalkers, nsteps) # Sample
-Chains MCMC chain (400×10×1000 Array{Float64, 3}) ...
source

Posterior Sampling: Change of Variables and HMC

Dolphin 2013 examined methods for obtaining uncertainties on the fitted coefficients (the $r_j$ in Equation 1 of Dolphin 2002) and found that the Hamiltonian Monte Carlo (HMC) approach allowed for relatively efficient sampling of the posterior distribution when considering many isochrones in the modelling process. HMC requires that the variables to be fit are continuous over the real numbers and so requires a change of variables. Rather than sampling the variables $r_j$ directly, we can sample $\theta_j = \text{ln} \left( r_j \right)$ such that the sampled variables are continuous over the real numbers $-\infty < \theta_j < \infty$ while the $r_j=\text{exp} \left( \theta_j \right)$ coefficients are bounded from $0 < r_j < \infty$. Using a logarithmic transformation has the additional benefit that the gradient of the Poisson likelihood ratio is still continuous and easy to compute analytically.

While maximum likelihood estimates are invariant under variable transformations, sampling methods like HMC are not, as formally the posterior being sampled from is a distribution and therefore must be integrable over the sampling coefficients. We can write the posterior from which we wish to sample as

\[\begin{aligned} +Chains MCMC chain (400×10×1000 Array{Float64, 3}) ...source

Posterior Sampling: Change of Variables and HMC

Dolphin 2013 examined methods for obtaining uncertainties on the fitted coefficients (the $r_j$ in Equation 1 of Dolphin 2002) and found that the Hamiltonian Monte Carlo (HMC) approach allowed for relatively efficient sampling of the posterior distribution when considering many isochrones in the modelling process. HMC requires that the variables to be fit are continuous over the real numbers and so requires a change of variables. Rather than sampling the variables $r_j$ directly, we can sample $\theta_j = \text{ln} \left( r_j \right)$ such that the sampled variables are continuous over the real numbers $-\infty < \theta_j < \infty$ while the $r_j=\text{exp} \left( \theta_j \right)$ coefficients are bounded from $0 < r_j < \infty$. Using a logarithmic transformation has the additional benefit that the gradient of the Poisson likelihood ratio is still continuous and easy to compute analytically.

While maximum likelihood estimates are invariant under variable transformations, sampling methods like HMC are not, as formally the posterior being sampled from is a distribution and therefore must be integrable over the sampling coefficients. We can write the posterior from which we wish to sample as

\[\begin{aligned} p(r_j | D) &= \frac{p(D | r_j) \; p(r_j)}{Z} \\ p(\boldsymbol{r} | D) &= \frac{1}{Z} \; \prod_j p(D | r_j) \; p(r_j) \\ -\text{ln} \; p(\boldsymbol{r} | D) &= \text{ln} \, Z - \sum_j \, \text{ln} \, p(D | r_j) + \text{ln} \, p(r_j) \\ @@ -106,16 +106,16 @@ t_result = hmc_sample( models, data, 1000, Threads.nthreads(); reporter=DynamicHMC.ProgressMeterReport()) # Combine the multiple chains into a single matrix and transform # Can then use the same way as `mc_matrix` above -mc_matrix = exp.( DynamicHMC.pool_posterior_matrices(t_result) )source

See the DynamicHMC.jl documentation for more information on how to use the chains that are output by this method.

Inspection of the samples generated by hmc_sample shows that the posterior defined by the above model is typically smooth, well-behaved, and unimodal. In particular, we find that the sampled $r_j$ for coefficients that are non-zero in the MLE are approximately Gaussian distributed while the logarithms of the sampled $r_j$ are roughly Gaussian distributed for coefficients that are zero in the MLE; i.e.

\[\begin{cases} +mc_matrix = exp.( DynamicHMC.pool_posterior_matrices(t_result) )source

See the DynamicHMC.jl documentation for more information on how to use the chains that are output by this method.

Inspection of the samples generated by hmc_sample shows that the posterior defined by the above model is typically smooth, well-behaved, and unimodal. In particular, we find that the sampled $r_j$ for coefficients that are non-zero in the MLE are approximately Gaussian distributed while the logarithms of the sampled $r_j$ are roughly Gaussian distributed for coefficients that are zero in the MLE; i.e.

\[\begin{cases} X_j \sim \mathcal{N}; & \hat r_j > 0 \\ \text{ln} \left( X_j \right) \sim \mathcal{N}; & \hat r_j = 0 \\ \end{cases}\]

where $X_j$ are the samples of $r_j$ obtained from the posterior and $\hat r_j$ is the maximum likelihood estimate of $r_j$.

This indicates we may be able to approximate the posterior in the region surrounding the maximum a posteriori (MAP) value by the inverse of the Hessian matrix (see, e.g., Dovi et al. 1991), allowing us to estimate parameter uncertainties very cheaply. The inverse of the Hessian matrix is exactly equal to the variance-covariance matrix of the parameters for a Gaussian probability distribution; for other probability distributions, the inverse of the Hessian approximates the variance-covariance matrix of the parameters when the second-order expansion defined by the Hessian at the maximum is a reasonable approximation to the real objective function being optimized. A particularly simple form arises when the logarithm of the objective is quadratic in the fitting parameters, as in the Gaussian case, because the second derivatives of the objective are constant and do not depend on the fitting parameters or the MAP estimate.

Maximum a Posteriori Optimization

Direct computation of the Hessian and its inverse is expensive, so we'd like another way to obtain it. The first-order, quasi-Newton BFGS optimization algorithm provides such a method as it iteratively builds a dense approximation to the inverse Hessian using the change in the gradient of the objective, which we can compute analytically. It is, however, much less memory efficient than the LBFGS algorithm we use in StarFormationHistories.fit_templates_lbfgsb. For moderate isochrone grids up to a few hundred model templates, this is not a problem. Beyond this it may be better to use StarFormationHistories.fit_templates_lbfgsb to obtain the MLE and hmc_sample to obtain posterior samples.

We implement this optimization scheme in fit_templates, which is our recommended method for unconstrained SFH fitting (i.e., direct fitting of the $r_j$ coefficients). See the next section for notes on more complicated, hierarchical models that can incorporate features like metallicity distribution functions.

StarFormationHistories.fit_templatesFunction
result = fit_templates(models::AbstractVector{T},
                        data::AbstractMatrix{<:Number};
                        x0::AbstractVector{<:Number} = ones(S,length(models)),
-                       kws...) where {S <: Number, T <: AbstractMatrix{S}}

Finds both maximum likelihood estimate (MLE) and maximum a posteriori estimate (MAP) for the coefficients coeffs such that the composite Hess diagram model is sum(models .* coeffs) using the provided templates models and the observed Hess diagram data. Utilizes the Poisson likelihood ratio (equations 7–10 in Dolphin 2002) for the likelihood of the data given the model. See the examples in the documentation for comparisons of the results of this method and hmc_sample which samples the posterior via Hamiltonian Monte Carlo.

Arguments

  • models::AbstractVector{AbstractMatrix{<:Number}}: the list of template Hess diagrams for the simple stellar populations (SSPs) being considered; all must have the same size.
  • data::AbstractMatrix{<:Number}: the observed Hess diagram; must match the size of the templates contained in models.

Keyword Arguments

  • x0: The vector of initial guesses for the stellar mass coefficients. You should basically always be calculating and passing this keyword argument; we provide StarFormationHistories.construct_x0 to prepare x0 assuming constant star formation rate, which is typically a good initial guess.

Other kws... are passed to Optim.options to set things like convergence criteria for the optimization.

Returns

result is a NamedTuple containing two StarFormationHistories.LogTransformFTResult. The two components of result are result.map or result[1], which contains the results of the MAP optimization, and result.mle or result[2], which contains the results of the MLE optimization. The documentation for StarFormationHistories.LogTransformFTResult contains more information about these types, but briefly they contain the following fields, accessible as, e.g., result.map.μ, result.map.σ, etc.:

  • μ::Vector{<:Number} are the optimized coeffs at the maximum.
  • σ::Vector{<:Number} are the standard errors on the coeffs μ calculated from an estimate of the inverse Hessian matrix evaluated at μ. The inverse of the Hessian matrix at the maximum of the likelihood (or posterior) is a estimator for the variance-covariance matrix of the parameters, but is only accurate when the second-order expansion given by the Hessian at the maximum is a good approximation to the function being optimized (i.e., when the optimized function is approximately quadratic around the maximum; see Dovi et al. 1991 for more information). We find this is often the case for the MAP estimate, but the errors found for coefficients that are ≈0 in the MLE are typically unrealistically small. For coefficients significantly greater than 0, the σ values from the MAP and MLE are typically consistent to 5–10%.
  • invH::Matrix{<:Number} is the estimate of the inverse Hessian matrix at μ that was used to derive σ. The optimization is done under a logarithmic transform, such that θ[j] = log(coeffs[j]) are the actual parameters optimized, so the entries in the Hessian are actually

\[H^{(j,k)} ( \boldsymbol{\hat \theta} ) = \left. \frac{\partial^2 \, J(\boldsymbol{\theta})}{\partial \theta_j \, \partial \theta_k} \right\vert_{\boldsymbol{\theta}=\boldsymbol{\hat \theta}}\]

  • result is the full object returned by the optimization from Optim.jl; this is of type Optim.MultivariateOptimizationResults. Remember that the optimization is done with parameters θ[j] = log(coeffs[j]) when dealing with this raw output. This means that, for example, we calculate result.map.μ as exp.(Optim.minimizer(result.map.result)).

The special property of the StarFormationHistories.LogTransformFTResult type is that you can draw a set of N::Integer random parameter samples from the result using the inverse Hessian approximation discussed above by doing rand(result.map, N). This type implements the random sampling API of Distributions.jl so the other standard sampling methods should work as well. In our tests these samples compare very favorably against those from hmc_sample, which samples the posterior via Hamiltonian Monte Carlo and is therefore more robust but much more expensive. We compare these methods in the examples.

Notes

  • This method uses the BFGS method from Optim.jl internally because it builds and tracks the inverse Hessian matrix approximation which can be used to estimate parameter uncertainties. BFGS is much more memory-intensive than LBFGS (as used for StarFormationHistories.fit_templates_lbfgsb) for large numbers of parameters (equivalently, many models), so you should consider LBFGS to solve for the MLE along with hmc_sample to sample the posterior if you are using a large grid of models (greater than a few hundred).
  • The BFGS implementation we use from Optim.jl uses BLAS operations during its iteration. The OpenBLAS that Julia ships with will often default to running on multiple threads even if Julia itself is started with only a single thread. You can check the current number of BLAS threads with import LinearAlgebra: BLAS; BLAS.get_num_threads(). For the problem sizes typical of this function we actually see performance regression with larger numbers of BLAS threads. For this reason you may wish to use BLAS in single-threaded mode; you can set this as import LinearAlgebra: BLAS; BLAS.set_num_threads(1).
source
fit_templates(models::AbstractMatrix{S},
+                       kws...) where {S <: Number, T <: AbstractMatrix{S}}

Finds both maximum likelihood estimate (MLE) and maximum a posteriori estimate (MAP) for the coefficients coeffs such that the composite Hess diagram model is sum(models .* coeffs) using the provided templates models and the observed Hess diagram data. Utilizes the Poisson likelihood ratio (equations 7–10 in Dolphin 2002) for the likelihood of the data given the model. See the examples in the documentation for comparisons of the results of this method and hmc_sample which samples the posterior via Hamiltonian Monte Carlo.

Arguments

  • models::AbstractVector{AbstractMatrix{<:Number}}: the list of template Hess diagrams for the simple stellar populations (SSPs) being considered; all must have the same size.
  • data::AbstractMatrix{<:Number}: the observed Hess diagram; must match the size of the templates contained in models.

Keyword Arguments

  • x0: The vector of initial guesses for the stellar mass coefficients. You should basically always be calculating and passing this keyword argument; we provide StarFormationHistories.construct_x0 to prepare x0 assuming constant star formation rate, which is typically a good initial guess.

Other kws... are passed to Optim.options to set things like convergence criteria for the optimization.

Returns

result is a NamedTuple containing two StarFormationHistories.LogTransformFTResult. The two components of result are result.map or result[1], which contains the results of the MAP optimization, and result.mle or result[2], which contains the results of the MLE optimization. The documentation for StarFormationHistories.LogTransformFTResult contains more information about these types, but briefly they contain the following fields, accessible as, e.g., result.map.μ, result.map.σ, etc.:

  • μ::Vector{<:Number} are the optimized coeffs at the maximum.
  • σ::Vector{<:Number} are the standard errors on the coeffs μ calculated from an estimate of the inverse Hessian matrix evaluated at μ. The inverse of the Hessian matrix at the maximum of the likelihood (or posterior) is a estimator for the variance-covariance matrix of the parameters, but is only accurate when the second-order expansion given by the Hessian at the maximum is a good approximation to the function being optimized (i.e., when the optimized function is approximately quadratic around the maximum; see Dovi et al. 1991 for more information). We find this is often the case for the MAP estimate, but the errors found for coefficients that are ≈0 in the MLE are typically unrealistically small. For coefficients significantly greater than 0, the σ values from the MAP and MLE are typically consistent to 5–10%.
  • invH::Matrix{<:Number} is the estimate of the inverse Hessian matrix at μ that was used to derive σ. The optimization is done under a logarithmic transform, such that θ[j] = log(coeffs[j]) are the actual parameters optimized, so the entries in the Hessian are actually

\[H^{(j,k)} ( \boldsymbol{\hat \theta} ) = \left. \frac{\partial^2 \, J(\boldsymbol{\theta})}{\partial \theta_j \, \partial \theta_k} \right\vert_{\boldsymbol{\theta}=\boldsymbol{\hat \theta}}\]

  • result is the full object returned by the optimization from Optim.jl; this is of type Optim.MultivariateOptimizationResults. Remember that the optimization is done with parameters θ[j] = log(coeffs[j]) when dealing with this raw output. This means that, for example, we calculate result.map.μ as exp.(Optim.minimizer(result.map.result)).

The special property of the StarFormationHistories.LogTransformFTResult type is that you can draw a set of N::Integer random parameter samples from the result using the inverse Hessian approximation discussed above by doing rand(result.map, N). This type implements the random sampling API of Distributions.jl so the other standard sampling methods should work as well. In our tests these samples compare very favorably against those from hmc_sample, which samples the posterior via Hamiltonian Monte Carlo and is therefore more robust but much more expensive. We compare these methods in the examples.

Notes

  • This method uses the BFGS method from Optim.jl internally because it builds and tracks the inverse Hessian matrix approximation which can be used to estimate parameter uncertainties. BFGS is much more memory-intensive than LBFGS (as used for StarFormationHistories.fit_templates_lbfgsb) for large numbers of parameters (equivalently, many models), so you should consider LBFGS to solve for the MLE along with hmc_sample to sample the posterior if you are using a large grid of models (greater than a few hundred).
  • The BFGS implementation we use from Optim.jl uses BLAS operations during its iteration. The OpenBLAS that Julia ships with will often default to running on multiple threads even if Julia itself is started with only a single thread. You can check the current number of BLAS threads with import LinearAlgebra: BLAS; BLAS.get_num_threads(). For the problem sizes typical of this function we actually see performance regression with larger numbers of BLAS threads. For this reason you may wish to use BLAS in single-threaded mode; you can set this as import LinearAlgebra: BLAS; BLAS.set_num_threads(1).
source
fit_templates(models::AbstractMatrix{S},
               data::AbstractVector{<:Number};
               x0::AbstractVector{<:Number} = ones(S,length(models)),
-              kws...) where S <: Number

This call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source
StarFormationHistories.LogTransformFTResultType
LogTransformFTResult(μ::AbstractVector{<:Number},
+              kws...) where S <: Number

This call signature supports the flattened formats for models and data. See the notes for the flattened call signature of StarFormationHistories.composite! for more details.

source
StarFormationHistories.LogTransformFTResultType
LogTransformFTResult(μ::AbstractVector{<:Number},
                      σ::AbstractVector{<:Number},
                      invH::AbstractMatrix{<:Number},
                      result)

Type for containing the maximum likelihood estimate (MLE) and maximum a posteriori (MAP) results from fit_templates. The fitted coefficients are available in the μ field. Estimates of the standard errors are available in the σ field. These have both been transformed from the native logarithmic fitting space into natural units (i.e., stellar mass or star formation rate).

invH contains the estimated inverse Hessian of the likelihood / posterior at the maximum point in the logarithmic fitting units. result is the full result object returned by the optimization routine.

This type is implemented as a subtype of Distributions.Sampleable{Multivariate, Continuous} to enable sampling from an estimate of the likelihood / posterior distribution. We approximate the distribution as a multivariate Gaussian in the native (logarithmically transformed) fitting variables with covariance matrix invH and means log.(μ). We find this approximation is good for the MAP result but less robust for the MLE. You can obtain N::Integer samples from the distribution by rand(R, N) where R is an instance of this type; this will return a size length(μ) x N matrix, or fail if invH is not positive definite.

Examples

julia> result = fit_templates(models, data);
@@ -124,10 +124,10 @@
 StarFormationHistories.LogTransformFTResult{...}
 
 julia> size(rand(result.map, 3)) == (length(models),3)
-true
source

Once you have obtained stellar mass coefficients from the above methods, you can convert them into star formation rates and compute per-age mean metallicities with StarFormationHistories.calculate_cum_sfr.

StarFormationHistories.calculate_cum_sfrFunction
(unique_logAge, cum_sfh, sfr, mean_MH) =
+true
source

Once you have obtained stellar mass coefficients from the above methods, you can convert them into star formation rates and compute per-age mean metallicities with StarFormationHistories.calculate_cum_sfr.

StarFormationHistories.calculate_cum_sfrFunction
(unique_logAge, cum_sfh, sfr, mean_MH) =
     calculate_cum_sfr(coeffs::AbstractVector,
                       logAge::AbstractVector,
                       MH::AbstractVector,
                       T_max::Number;
                       normalize_value=1,
-                      sorted::Bool=false)

Calculates cumulative star formation history, star formation rates, and mean metallicity evolution as functions of logAge = log10(age [yr]).

Arguments

  • coeffs::AbstractVector is a vector of stellar mass coefficients such as those returned by fit_templates, for example. Actual stellar mass in stellar population j is coeffs[j] * normalize_value.
  • logAge::AbstractVector is a vector giving the log10(age [yr]) of the stellar populations corresponding to the provided coeffs. For the purposes of calculating star formation rates, these are assumed to be left-bin edges.
  • MH::AbstractVector is a vector giving the metallicities of the stellar populations corresponding to the provided coeffs.
  • T_max::Number is the rightmost final bin edge for calculating star formation rates in units of Gyr. For example, you might have logAge=[6.6, 6.7, 6.8] in which case a final logAge of 6.9 would give equal bin widths. In this case you would set T_max = exp10(6.9) / 1e9 ≈ 0.0079 so that the width of the final bin for the star formation rate calculation has the same log10(Age [yr]) step as the other bins.

Keyword Arguments

  • normalize_value is a multiplicative prefactor to apply to all the coeffs; same as the keyword in partial_cmd_smooth.
  • sorted::Bool is either true or false and signifies whether to assume logAge is sorted.

Returns

  • unique_logAge::Vector is essentially unique(sort(logAge)) and provides the x-values you would plot the other returned vectors against.
  • cum_sfh::Vector is the normalized cumulative SFH implied by the provided coeffs. This is ~1 at the most recent time in logAge and decreases as logAge increases.
  • sfr::Vector gives the star formation rate across each bin in unique_logAge. If coeffs .* normalize_value are in units of solar masses, then sfr is in units of solar masses per year.
  • mean_MH::Vector gives the stellar-mass-weighted mean metallicity of the stellar population as a function of unique_logAge.
source
+ sorted::Bool=false)

Calculates cumulative star formation history, star formation rates, and mean metallicity evolution as functions of logAge = log10(age [yr]).

Arguments

Keyword Arguments

Returns

source diff --git a/dev/helpers/index.html b/dev/helpers/index.html index 5b49bf5..b098f6a 100644 --- a/dev/helpers/index.html +++ b/dev/helpers/index.html @@ -1,22 +1,22 @@ -Helper Functions · StarFormationHistories.jl

Helper Functions

Distances and Sizes

StarFormationHistories.arcsec_to_pcFunction
arcsec_to_pc(arcsec, dist_mod)

Converts on-sky angle in arcseconds to physical separation based on distance modulus under the small-angle approximation.

\[r ≈ 10^{μ/5 + 1} \times \text{atan}(θ/3600)\]

source

Magnitudes and Luminosities

StarFormationHistories.mag2fluxFunction
mag2flux(m, zpt=0)

Convert a magnitude m to a flux assuming a photometric zeropoint of zpt, defined as the magnitude of an object that produces one count (or data number, DN) per second.

julia> mag2flux(15.0, 25.0) ≈ exp10(4 * (25.0 - 15.0) / 10)
-true
source
StarFormationHistories.flux2magFunction
flux2mag(f, zpt=0)

Convert a flux f to a magnitude assuming a photometric zeropoint of zpt, defined as the magnitude of an object that produces one count (or data number, DN) per second.

julia> flux2mag(10000.0, 25.0) ≈ 25.0 - 5 * log10(10000.0) / 2
-true
source
StarFormationHistories.magerrFunction
magerr(f, σf)

Returns an error in magnitudes given a flux and a flux uncertainty.

julia> magerr(100.0, 1.0) ≈ 2.5 / log(10) * (1.0 / 100.0)
-true
source
StarFormationHistories.fluxerrFunction
fluxerr(f, σm)

Returns an error in flux given a flux and a magnitude uncertainty.

julia> fluxerr(100.0, 0.01) ≈ (0.01 * 100.0) / 2.5 * log(10)
-true
source
StarFormationHistories.snr_magerrFunction
snr_magerr(σm)

Returns a signal-to-noise ratio $(f/σf)$ given an uncertainty in magnitudes.

julia> snr_magerr(0.01) ≈ 2.5 / log(10) / 0.01
-true
source
StarFormationHistories.magerr_snrFunction
magerr_snr(snr)

Returns a magnitude uncertainty given a signal-to-noise ratio $(f/σf)$.

julia> magerr_snr(100.0) ≈ 2.5 / log(10) / 100.0
-true
source

Metallicities

StarFormationHistories.Y_from_ZFunction
Y_from_Z(Z, Y_p=0.2485, γ=1.78)

Calculates the helium mass fraction (Y) for a star given its metal mass fraction (Z) using the approximation Y = Y_p + γ * Z, with Y_p being the primordial helium abundance Y_p=0.2485 as assumed for PARSEC isochrones and γ=1.78 matching the input scaling for PARSEC as well.

source
StarFormationHistories.X_from_ZFunction
X_from_Z(Z[, Yp, γ])

Calculates the hydrogen mass fraction (X) for a star given its metal mass fraction (Z) via X = 1 - (Z + Y), with the helium mass fraction Y approximated via StarFormationHistories.Y_from_Z. You may also provide the primordial helium abundance Y_p and γ such that Y = Y_p + γ * Z; these are passed through to X_from_Z.

source
StarFormationHistories.MH_from_ZFunction
MH_from_Z(Z, solZ=0.01524; Y_p = 0.2485, γ = 1.78)

Calculates [M/H] = log(Z/X) - log(Z/X)⊙. Given the provided solar metal mass fraction solZ, it calculates the hydrogen mass fraction X for both the Sun and the provided Z with StarFormationHistories.X_from_Z. You may also provide the primordial helium abundance Y_p and γ such that Y = Y_p + γ * Z; these are passed through to X_from_Z.

The present-day solar Z is measured to be 0.01524 (Caffau et al. 2011), but for PARSEC isochrones an [M/H] of 0 corresponds to Z=0.01471. This is because of a difference between the Sun's initial and present helium content caused by diffusion. If you want to reproduce PARSEC's scaling, you should set solZ=0.01471.

This function is an approximation and may not be suitable for precision calculations.

source
StarFormationHistories.Z_from_MHFunction
Z_from_MH(MH, solZ=0.01524; Y_p = 0.2485, γ = 1.78)

Calculates metal mass fraction Z assuming that the solar metal mass fraction is solZ and using the PARSEC relation for the helium mass fraction Y = Y_p + γ * Z with primordial helium abundance Y_p = 0.2485, and γ = 1.78.

source
StarFormationHistories.mdf_amrFunction
(unique_MH, mass_mdf) =
+Helper Functions · StarFormationHistories.jl

Helper Functions

Distances and Sizes

StarFormationHistories.arcsec_to_pcFunction
arcsec_to_pc(arcsec, dist_mod)

Converts on-sky angle in arcseconds to physical separation based on distance modulus under the small-angle approximation.

\[r ≈ 10^{μ/5 + 1} \times \text{atan}(θ/3600)\]

source

Magnitudes and Luminosities

StarFormationHistories.mag2fluxFunction
mag2flux(m, zpt=0)

Convert a magnitude m to a flux assuming a photometric zeropoint of zpt, defined as the magnitude of an object that produces one count (or data number, DN) per second.

julia> mag2flux(15.0, 25.0) ≈ exp10(4 * (25.0 - 15.0) / 10)
+true
source
StarFormationHistories.flux2magFunction
flux2mag(f, zpt=0)

Convert a flux f to a magnitude assuming a photometric zeropoint of zpt, defined as the magnitude of an object that produces one count (or data number, DN) per second.

julia> flux2mag(10000.0, 25.0) ≈ 25.0 - 5 * log10(10000.0) / 2
+true
source
StarFormationHistories.magerrFunction
magerr(f, σf)

Returns an error in magnitudes given a flux and a flux uncertainty.

julia> magerr(100.0, 1.0) ≈ 2.5 / log(10) * (1.0 / 100.0)
+true
source
StarFormationHistories.fluxerrFunction
fluxerr(f, σm)

Returns an error in flux given a flux and a magnitude uncertainty.

julia> fluxerr(100.0, 0.01) ≈ (0.01 * 100.0) / 2.5 * log(10)
+true
source
StarFormationHistories.snr_magerrFunction
snr_magerr(σm)

Returns a signal-to-noise ratio $(f/σf)$ given an uncertainty in magnitudes.

julia> snr_magerr(0.01) ≈ 2.5 / log(10) / 0.01
+true
source
StarFormationHistories.magerr_snrFunction
magerr_snr(snr)

Returns a magnitude uncertainty given a signal-to-noise ratio $(f/σf)$.

julia> magerr_snr(100.0) ≈ 2.5 / log(10) / 100.0
+true
source

Metallicities

StarFormationHistories.Y_from_ZFunction
Y_from_Z(Z, Y_p=0.2485, γ=1.78)

Calculates the helium mass fraction (Y) for a star given its metal mass fraction (Z) using the approximation Y = Y_p + γ * Z, with Y_p being the primordial helium abundance Y_p=0.2485 as assumed for PARSEC isochrones and γ=1.78 matching the input scaling for PARSEC as well.

source
StarFormationHistories.X_from_ZFunction
X_from_Z(Z[, Yp, γ])

Calculates the hydrogen mass fraction (X) for a star given its metal mass fraction (Z) via X = 1 - (Z + Y), with the helium mass fraction Y approximated via StarFormationHistories.Y_from_Z. You may also provide the primordial helium abundance Y_p and γ such that Y = Y_p + γ * Z; these are passed through to X_from_Z.

source
StarFormationHistories.MH_from_ZFunction
MH_from_Z(Z, solZ=0.01524; Y_p = 0.2485, γ = 1.78)

Calculates [M/H] = log(Z/X) - log(Z/X)⊙. Given the provided solar metal mass fraction solZ, it calculates the hydrogen mass fraction X for both the Sun and the provided Z with StarFormationHistories.X_from_Z. You may also provide the primordial helium abundance Y_p and γ such that Y = Y_p + γ * Z; these are passed through to X_from_Z.

The present-day solar Z is measured to be 0.01524 (Caffau et al. 2011), but for PARSEC isochrones an [M/H] of 0 corresponds to Z=0.01471. This is because of a difference between the Sun's initial and present helium content caused by diffusion. If you want to reproduce PARSEC's scaling, you should set solZ=0.01471.

This function is an approximation and may not be suitable for precision calculations.

source
StarFormationHistories.Z_from_MHFunction
Z_from_MH(MH, solZ=0.01524; Y_p = 0.2485, γ = 1.78)

Calculates metal mass fraction Z assuming that the solar metal mass fraction is solZ and using the PARSEC relation for the helium mass fraction Y = Y_p + γ * Z with primordial helium abundance Y_p = 0.2485, and γ = 1.78.

source
StarFormationHistories.mdf_amrFunction
(unique_MH, mass_mdf) =
 mdf_amr(coeffs::AbstractVector{<:Number},
         logAge::AbstractVector{<:Number},
         metallicities::AbstractVector{<:Number})

Calculates the mass-weighted metallicity distribution function given a set of stellar mass coefficients coeffs for stellar populations with logarithmic ages logAge=log10(age [yr]) and metallicities given by metallicities. This is calculated as

\[P_j = \frac{ \sum_k r_{j,k} \, [\text{M} / \text{H}]_k}{\sum_{j,k} r_{j,k} \, [\text{M} / \text{H}]_k}\]

where $r_{j,k}$ are the elements of coeffs where $j$ indexes over unique entries in logAge and $k$ indexes over unique entries in metallicities. This is the same nomenclature used in the the documentation on constrained metallicity evolutions. The return values are sorted so that unique_MH is in increasing order.

Examples

julia> mdf_amr([1.0, 2.0, 1.0], [10, 10, 10], [-2, -1.5, -1])
-([-2.0, -1.5, -1.0], [0.25, 0.5, 0.25])
source
(unique_MH, mass_mdf) =
+([-2.0, -1.5, -1.0], [0.25, 0.5, 0.25])
source
(unique_MH, mass_mdf) =
 mdf_amr(coeffs::AbstractVector{<:Number},
         logAge::AbstractVector{<:Number},
         metallicities::AbstractVector{<:Number},
         models::Union{AbstractVector{<:AbstractMatrix{<:Number}},
                       AbstractMatrix{<:Number}})

Calculates the number-weighted metallicity distribution function given a set of coefficients coeffs for stellar populations with logarithmic ages logAge=log10(age [yr]), metallicities given by metallicities, and Hess diagram templates models. This function constructs a composite Hess diagram (see composite! for definition) out of the coeffs and models that match each unique entry in metallicites. The sums over the bins of these composite Hess diagrams then give the total predicted number of stars in the Hess diagram viewport for each metallicity. The raw number counts for each unique metallicity are returned as mass_mdf – these can be renormalized afterward to sum to one by calculating mass_mdf ./ sum(mass_mdf).

Examples

julia> mdf_amr([1.0, 2.0, 1.0], [10, 10, 10], [-2, -1.5, -1],
                map(Base.Fix2(fill, (100, 100)), [1.0, 2.0, 1.0]))
-([-2.0, -1.5, -1.0], [10000.0, 40000.0, 10000.0])
source

Photometric Error and Completeness Models

StarFormationHistories.Martin2016_completeFunction
η(m) = Martin2016_complete(m, A, m50, ρ)

Completeness model of Martin et al. 2016 implemented as their Equation 7:

\[\eta(m) = \frac{A}{1 + \text{exp} \left( \frac{m - m_{50}}{\rho} \right)}\]

m is the magnitude of interest, A is the maximum completeness, m50 is the magnitude at which the data are 50% complete, and ρ is an effective slope modifier.

source
StarFormationHistories.exp_photerrFunction
exp_photerr(m, a, b, c, d)

Exponential model for photometric errors of the form

\[\sigma(m) = a^{b \times \left( m-c \right)} + d\]

Reported values for some HST data were a=1.05, b=10.0, c=32.0, d=0.01.

source

Photometric Error and Completeness Models

StarFormationHistories.Martin2016_completeFunction
η(m) = Martin2016_complete(m, A, m50, ρ)

Completeness model of Martin et al. 2016 implemented as their Equation 7:

\[\eta(m) = \frac{A}{1 + \text{exp} \left( \frac{m - m_{50}}{\rho} \right)}\]

m is the magnitude of interest, A is the maximum completeness, m50 is the magnitude at which the data are 50% complete, and ρ is an effective slope modifier.

source
StarFormationHistories.exp_photerrFunction
exp_photerr(m, a, b, c, d)

Exponential model for photometric errors of the form

\[\sigma(m) = a^{b \times \left( m-c \right)} + d\]

Reported values for some HST data were a=1.05, b=10.0, c=32.0, d=0.01.

source
StarFormationHistories.process_ASTsFunction
process_ASTs(ASTs::Union{DataFrames.DataFrame,
                          TypedTables.Table},
              inmag::Symbol,
              outmag::Symbol,
@@ -25,4 +25,4 @@
              statistic=StatsBase.median)

Processes a table of artificial stars to calculate photometric completeness, bias, and error across the provided bins. This method has no default implementation and is implemented in package extensions that rely on either DataFrames.jl or TypedTables.jl being loaded into your Julia session to load the relevant method. This method therefore requires Julia 1.9 or greater to use.

Arguments

  • ASTs is the table of artificial stars to be analyzed.
  • inmag is the column name in symbol format (e.g., :F606Wi) that corresponds to the intrinsic (input) magnitudes of the artificial stars.
  • outmag is the column name in symbol format (e.g., :F606Wo) that corresponds to the measured (output) magnitude of the artificial stars.
  • bins give the bin edges to be used when computing the binned statistics.
  • selectfunc is a method that takes a single row from ASTs, corresponding to a single artificial star, and returns a boolean that is true if the star is considered successfully measured.

Keyword Arguments

  • statistic is the method that will be used to determine the bias and error, i.e., bias = statistic(out .- in) and error = statistic(abs.(out .- in)). By default we use StatsBase.median, but you could instead use a simple or sigma-clipped mean if so desired.

Returns

This method returns a result of type NTuple{4,Vector{Float64}}. Each vector is of length length(bins)-1. result contains the following elements, each of which are computed over the provided bins considering only artificial stars for which selectfunc returned true:

  • result[1] contains the mean input magnitude of the stars in each bin.
  • result[2] contains the completeness value measured for each bin, defined as the fraction of input stars in each bin for which selectfunc returned true.
  • result[3] contains the photometric bias measured for each bin, defined as statistic(out .- in), where out are the measured (output) magnitudes and in are the intrinsic (input) magnitudes.
  • result[4] contains the photometric error measured for each bin, defined as statistic(abs.(out .- in)), with out and in defined as above.

Examples

Let

  • F606Wi be a vector containing the input magnitudes of your artificial stars
  • F606Wo be a vector containing the measured magnitudes of the artificial stars, where a value of 99.999 indicates a non-detection.
  • flag be a vector of booleans that indicates whether the artificial star passed additional quality cuts (star-galaxy separation, etc.)

You could call this method as

import TypedTables: Table
 process_ASTs(Table(input=F606Wi, output=F606Wo, good=flag),
              :input, :output, minimum(F606Wi):0.1:maximum(F606Wi),
-             x -> (x.good==true) & (x.output != 99.999))

See also the tests in test/utilities/process_ASTs_test.jl.

source
+ x -> (x.good==true) & (x.output != 99.999))

See also the tests in test/utilities/process_ASTs_test.jl.

source
diff --git a/dev/index.html b/dev/index.html index 8a47749..82eaeff 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -Overview · StarFormationHistories.jl

Overview

This package enables many different kinds of analysis related to astrophysical star formation histories (SFHs). Core among these functionalities are generation of mock color-magnitude diagrams (CMDs) from input SFHs and fitting of SFHs from observed CMDs. The methods of this package have been designed to be simple to use but easy to extend. It is recommended that you use this package in conjunction with InitialMassFunctions.jl which provides implementations of the most popular stellar initial mass functions as new types which are natively supported by this package's methods.

+Overview · StarFormationHistories.jl

Overview

This package enables many different kinds of analysis related to astrophysical star formation histories (SFHs). Core among these functionalities are generation of mock color-magnitude diagrams (CMDs) from input SFHs and fitting of SFHs from observed CMDs. The methods of this package have been designed to be simple to use but easy to extend. It is recommended that you use this package in conjunction with InitialMassFunctions.jl which provides implementations of the most popular stellar initial mass functions as new types which are natively supported by this package's methods.

diff --git a/dev/sigma_distribution_binaries.svg b/dev/sigma_distribution_binaries.svg index c184a1b..41315dc 100644 --- a/dev/sigma_distribution_binaries.svg +++ b/dev/sigma_distribution_binaries.svg @@ -6,7 +6,7 @@ - 2025-01-25T15:07:55.192240 + 2025-01-25T17:51:33.729562 image/svg+xml @@ -40,98 +40,98 @@ z +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> +" clip-path="url(#pa822024f6c)" style="fill: #1f77b4; stroke: #000000; stroke-linejoin: miter"/> - - + @@ -293,7 +293,7 @@ z - + @@ -329,7 +329,7 @@ z - + @@ -751,12 +751,12 @@ z - - + @@ -780,12 +780,12 @@ z - + - + - + - + @@ -830,12 +830,12 @@ z - + - + - + - + - + - + - + - + + @@ -1256,10 +1279,10 @@ z - - + + - + + - + - - + + @@ -1399,7 +1450,7 @@ z - + diff --git a/dev/simulate/index.html b/dev/simulate/index.html index c8397a4..8a34100 100644 --- a/dev/simulate/index.html +++ b/dev/simulate/index.html @@ -8,11 +8,11 @@ mag_lim::Number = Inf, mag_lim_name::String = "V", binary_model::StarFormationHistories.AbstractBinaryModel = - StarFormationHistories.RandomBinaryPairs(0.3))

Generates a random sample of stars from an isochrone defined by the provided initial stellar masses mini_vec, absolute magnitudes mags, and filter names mag_names with total population birth stellar mass limit (e.g., 1e5 solar masses). Initial stellar masses are sampled from the provided imf.

Arguments

  • mini_vec::AbstractVector{<:Number} contains the initial masses (in solar masses) for the stars in the isochrone; must be mutable as we call Interpolations.deduplicate_knots!(mini_vec).
  • mags contains the absolute magnitudes from the isochrone in the desired filters corresponding to the same stars as provided in mini_vec. mags is internally interpreted and converted into a standard format by StarFormationHistories.ingest_mags. Valid inputs are:
    • mags::AbstractVector{AbstractVector{<:Number}}, in which case the length of the outer vector length(mags) can either be equal to length(mini_vec), in which case the length of the inner vectors must all be equal to the number of filters you are providing, or the length of the outer vector can be equal to the number of filters you are providing, and the length of the inner vectors must all be equal to length(mini_vec); this is the more common use-case.
    • mags::AbstractMatrix{<:Number}, in which case mags must be 2-dimensional. Valid shapes are size(mags) == (length(mini_vec), nfilters) or size(mags) == (nfilters, length(mini_vec)), with nfilters being the number of filters you are providing.
  • mag_names::AbstractVector{String} contains strings describing the filters you are providing in mags; an example might be ["B","V"]. These are used when mag_lim is finite to determine what filter you want to use to limit the faintest stars you want returned.
  • limit::Number gives the total birth stellar mass of the population you want to sample. See the "Notes" section on population masses for more information.
  • imf::Distributions.Sampleable{Distributions.Univariate, Distributions.Continuous} is a sampleable continuous univariate distribution implementing a stellar initial mass function with a defined rand(rng::Random.AbstractRNG, imf) method to use for sampling masses. All instances of Distributions.ContinuousUnivariateDistribution are also valid. Implementations of commonly used IMFs are available in InitialMassFunctions.jl.

Keyword Arguments

  • dist_mod::Number=0 is the distance modulus (see StarFormationHistories.distance_modulus) you wish to have added to the returned magnitudes to simulate a population at a particular distance.
  • rng::Random.AbstractRNG=Random.default_rng() is the rng instance that will be used to sample the stellar initial masses from imf.
  • mag_lim::Number=Inf gives the faintest apparent magnitude for stars you want to be returned in the output. Stars fainter than this magnitude will still be sampled and contribute properly to the total mass of the population, but they will not be returned.
  • mag_lim_name::String="V" gives the filter name (as contained in mag_names) to use when considering if a star is fainter than mag_lim. This is unused if mag_lim is infinite.
  • binary_model::StarFormationHistories.AbstractBinaryModel=StarFormationHistories.RandomBinaryPairs(0.3) is an instance of a model for treating binaries; currently provided options are NoBinaries, RandomBinaryPairs, and BinaryMassRatio.

Returns

(sampled_masses, sampled_mags) defined as

  • sampled_masses::Vector{SVector{N,eltype(imf)}} is a vector containing the initial stellar masses of the stars sampled by sample_system; see that method's documentation for details on format. In short, each StaticArrays.SVector represents one stellar system and each entry in each StaticArrays.SVector is one star in that system. Entries will be 0 when companions could have been sampled but were not (i.e., when using a binary_model that supports multi-star systems).
  • sampled_mags::Vector{SVector{N,<:Number}} is a vector containing StaticArrays.SVectors with the multi-band magnitudes of the sampled stars. To get the magnitude of star i in band j, you index as sampled_mags[i][j]. This can be reinterpreted as a 2-dimensional Matrix with reduce(hcat,sampled_mags).

Notes

Population Masses

Given a particular isochrone with an initial mass vector mini_vec, it will never cover the full range of stellar birth masses because stars that die before present-day are not included in the isochrone. However, these stars were born, and so contribute to the total birth mass of the system. There are two ways to properly account for this lost mass when sampling:

  1. Set the upper limit for masses that can be sampled from the imf distribution to a physical value for the maximum birth mass of stars (e.g., 100 solar masses). In this case, these stars will be sampled from imf, and will contribute their masses to the system, but they will not be returned if their birth mass is greater than maximum(mini_vec). This is typically easiest for the user and only results in ∼15% loss of efficiency for 10 Gyr isochrones. This approach is preferred when sampling with binaries.
  2. Set the upper limit for masses that can be sampled from the imf distribution to maximum(mini_vec) and adjust limit to respect the amount of initial stellar mass lost by not sampling higher mass stars. This can be calculated as new_limit = limit * ( QuadGK.quadgk(x->x*pdf(imf,x), minimum(mini_vec), maximum(mini_vec))[1] / QuadGK.quadgk(x->x*pdf(imf,x), minimum(imf), maximum(imf))[1] ), with the multiplicative factor being the fraction of the population stellar mass contained in stars with initial masses between minimum(mini_vec) and maximum(mini_vec); this factor is the ratio

\[\frac{\int_a^b \ m \times \frac{dN(m)}{dm} \ dm}{\int_0^∞ \ m \times \frac{dN(m)}{dm} \ dm}.\]

Note that, if binaries are included, this approach only forms binary pairs between stars whose masses are less than maximum(mini_vec). This is probably not desired, so we recommend the previous approach when including binaries.

source
StarFormationHistories.generate_stars_magFunction
(sampled_masses, sampled_mags) =  generate_stars_mag(mini_vec::AbstractVector{<:Number}, mags, mag_names::AbstractVector{String}, absmag::Real, absmag_name::String, imf::Distributions.Sampleable{Distributions.Univariate,Distributions.Continuous}; dist_mod::Number=0, rng::AbstractRNG=default_rng(), mag_lim::Number=Inf, mag_lim_name::String="V", binary_model::StarFormationHistories.AbstractBinaryModel=RandomBinaryPairs(0.3))

Generates a mock stellar population from an isochrone defined by the provided initial stellar masses mini_vec, absolute magnitudes mags, and filter names mag_names. The population is sampled to a total absolute magnitude absmag::Real (e.g., -7 or -12) in the filter absmag_name::String (e.g., "V" or "F606W") which is contained in the provided mag_names::AbstractVector{String}. Other arguments are shared with generate_stars_mass, which contains the main documentation.

Notes

Population Magnitudes

Unlike when sampling a population to a fixed initial birth mass, as is implemented in generate_stars_mass, when generating a population up to a fixed absolute magnitude, only stars that survive to present-day contribute to the flux of the population. If you choose to limit the apparent magnitude of stars returned by passing the mag_lim and mag_lim_name keyword arguments, stars fainter than your chosen limit will still be sampled and will still contribute their luminosity to the total population, but they will not be contained in the returned output.

source

Complex Stellar Populations

StarFormationHistories.generate_stars_mass_compositeFunction
(sampled_masses, sampled_mags) = generate_stars_mass_composite(mini_vec::AbstractVector{<:AbstractVector{<:Number}}, mags::AbstractVector, mag_names::AbstractVector{String}, limit::Number, massfrac::AbstractVector{<:Number}, imf::Sampleable{Univariate,Continuous}; kws...)

Generates a random sample of stars with a complex star formation history using multiple isochrones. Very similar to generate_stars_mass except the isochrone-related arguments mini_vec and mags should now be vectors of vectors containing the relevant data for the full set of isochrones to be considered. The total birth stellar mass of the sampled population is given by limit. The proportion of this mass allotted to each of the individual isochrones is given by the entries of the massfrac vector. This basically just proportions limit according to massfrac and calls generate_stars_mass for each of the individual stellar populations; as such it is set up to multi-thread across the multiple stellar populations.

Arguments

  • mini_vec::AbstractVector{<:AbstractVector{<:Number}} contains the initial masses (in solar masses) for the stars in each isochrone; the internal vectors must be mutable as we will call Interpolations.deduplicate_knots! on each. The length of mini_vec should be equal to the number of isochrones.
  • mags contains the absolute magnitudes from the isochrones in the desired filters corresponding to the same stars as provided in mini_vec. The length of mags should be equal to the number of isochrones. The individual elements of mags are each internally interpreted and converted into a standard format by StarFormationHistories.ingest_mags. The valid formats for the individual elements of mags are:
    • AbstractVector{AbstractVector{<:Number}}, in which case the length of the vector length(mags[i]) can either be equal to length(mini_vec[i]), in which case the length of the inner vectors must all be equal to the number of filters you are providing, or the length of the outer vector can be equal to the number of filters you are providing, and the length of the inner vectors must all be equal to length(mini_vec[i]); this is the more common use-case.
    • AbstractMatrix{<:Number}, in which case mags[i] must be 2-dimensional. Valid shapes are size(mags[i]) == (length(mini_vec[i]), nfilters) or size(mags[i]) == (nfilters, length(mini_vec[i])), with nfilters being the number of filters you are providing.
  • mag_names::AbstractVector{String} contains strings describing the filters you are providing in mags; an example might be ["B","V"]. These are used when mag_lim is finite to determine what filter you want to use to limit the faintest stars you want returned. These are assumed to be the same for all isochrones.
  • limit::Number gives the total birth stellar mass of the population you want to sample.
  • massfrac::AbstractVector{<:Number} is vector giving the relative fraction of mass allotted to each individual stellar population; length must be equal to the length of mini_vec and mags.
  • imf::Distributions.Sampleable{Distributions.Univariate, Distributions.Continuous} is a sampleable continuous univariate distribution implementing a stellar initial mass function with a defined rand(rng::Random.AbstractRNG, imf) method to use for sampling masses. All instances of Distributions.ContinuousUnivariateDistribution are also valid. Implementations of commonly used IMFs are available in InitialMassFunctions.jl.

Keyword Arguments

All keyword arguments kws... are passed to generate_stars_mass; you should refer to that method's documentation for more information.

Returns

  • sampled_masses::Vector{Vector{SVector{N,eltype(imf)}}} is a vector of vectors containing the initial stellar masses of the sampled stars. The outer vectors are separated by the isochrone the stars were generated from; i.e., all of sampled_masses[1] were sampled from mini_vec[1] and so on. These can be concatenated into a single vector with reduce(vcat,sampled_masses). The format of the contained StaticArrays.SVectors are as output from sample_system; see that method's documentation for more details.
  • sampled_mags::Vector{Vector{SVector{N,<:Number}}} is a vector of vectors containing StaticArrays.SVectors with the multi-band magnitudes of the sampled stars. The outer vectors are separated by the isochrone the stars were generated from; i.e. all of sampled_mags[1] were sampled from mags[1] and so on. To get the magnitude of star i in band j sampled from isochrone k, you would do sampled_mags[k][i][j]. This can be concatenated into a Vector{SVector} with reduce(vcat,sampled_mags) and a 2-D Matrix with reduce(hcat,reduce(vcat,sampled_mags)).
source
StarFormationHistories.generate_stars_mag_compositeFunction
(sampled_masses, sampled_mags) = generate_stars_mag_composite(mini_vec::AbstractVector{<:AbstractVector{<:Number}}, mags::AbstractVector, mag_names::AbstractVector{String}, absmag::Number, absmag_name::String, fracs::AbstractVector{<:Number}, imf::Sampleable{Univariate,Continuous}; frac_type::String="lum", kws...)

Generates a random sample of stars with a complex star formation history using multiple isochrones. Very similar to generate_stars_mag except the isochrone-related arguments mini_vec and mags should now be vectors of vectors containing the relevant data for the full set of isochrones to be considered. The total absolute magnitude of the sampled population is given by absmag. The proportion of the luminosity allotted to each of the individual isochrones is given by the entries of the frac vector. This basically just proportions the luminosity according to frac and calls generate_stars_mag for each of the individual stellar populations; as such it is set up to multi-thread across the multiple stellar populations.

Arguments

  • mini_vec::AbstractVector{<:AbstractVector{<:Number}} contains the initial masses (in solar masses) for the stars in each isochrone; the internal vectors must be mutable as we will call Interpolations.deduplicate_knots! on each. The length of mini_vec should be equal to the number of isochrones.
  • mags contains the absolute magnitudes from the isochrones in the desired filters corresponding to the same stars as provided in mini_vec. The length of mags should be equal to the number of isochrones. The individual elements of mags are each internally interpreted and converted into a standard format by StarFormationHistories.ingest_mags. The valid formats for the individual elements of mags are:
    • AbstractVector{AbstractVector{<:Number}}, in which case the length of the vector length(mags[i]) can either be equal to length(mini_vec[i]), in which case the length of the inner vectors must all be equal to the number of filters you are providing, or the length of the outer vector can be equal to the number of filters you are providing, and the length of the inner vectors must all be equal to length(mini_vec[i]); this is the more common use-case.
    • AbstractMatrix{<:Number}, in which case mags[i] must be 2-dimensional. Valid shapes are size(mags[i]) == (length(mini_vec[i]), nfilters) or size(mags[i]) == (nfilters, length(mini_vec[i])), with nfilters being the number of filters you are providing.
  • mag_names::AbstractVector{String} contains strings describing the filters you are providing in mags; an example might be ["B","V"]. These are used when mag_lim is finite to determine what filter you want to use to limit the faintest stars you want returned. These are assumed to be the same for all isochrones.
  • absmag::Number gives the total absolute magnitude of the complex population to be sampled.
  • fracs::AbstractVector{<:Number} is a vector giving the relative fraction of luminosity or mass (determined by the frac_type keyword argument) allotted to each individual stellar population; length must be equal to the length of mini_vec and mags.
  • imf::Distributions.Sampleable{Distributions.Univariate, Distributions.Continuous} is a sampleable continuous univariate distribution implementing a stellar initial mass function with a defined rand(rng::Random.AbstractRNG, imf) method to use for sampling masses. All instances of Distributions.ContinuousUnivariateDistribution are also valid. Implementations of commonly used IMFs are available in InitialMassFunctions.jl.

Keyword Arguments

  • frac_type::String either "lum", in which case fracs is assumed to contain the relative luminosity fractions for each individual isochrone, or "mass", in which case it is assumed that fracs contains mass fractions ("mass" is not yet implemented).

All other keyword arguments kws... are passed to generate_stars_mag; you should refer to that method's documentation for more information.

Returns

  • sampled_masses::Vector{Vector{SVector{N,eltype(imf)}}} is a vector of vectors containing the initial stellar masses of the sampled stars. The outer vectors are separated by the isochrone the stars were generated from; i.e., all of sampled_masses[1] were sampled from mini_vec[1] and so on. These can be concatenated into a single vector with reduce(vcat,sampled_masses). The format of the contained StaticArrays.SVectors are as output from sample_system; see that method's documentation for more details.
  • sampled_mags::Vector{Vector{SVector{N,<:Number}}} is a vector of vectors containing StaticArrays.SVectors with the multi-band magnitudes of the sampled stars. The outer vectors are separated by the isochrone the stars were generated from; i.e. all of sampled_mags[1] were sampled from mags[1] and so on. To get the magnitude of star i in band j sampled from isochrone k, you would do sampled_mags[k][i][j]. This can be concatenated into a Vector{SVector} with reduce(vcat,sampled_mags) and a 2-D Matrix with reduce(hcat,reduce(vcat,sampled_mags)).
source

Observational Effects

The output produced from the above methods are clean in the sense that they do not include any observational effects like photometric error or incompleteness. These effects should be implemented in a post-processing step. We provide a simple method model_cmd that accepts user-defined photometric error and completeness functions and applies them to the initial catalog, returning a Monte Carlo realization of a possible observed catalog. This method assumes Gaussian photometric errors and that the photometric error and completeness functions are separable by filter – these assumptions are not applicable for all types of data, but the source code for the method is exceedingly simple (~20 lines) and should provide an example for how you could write a similar method that more accurately reflects your data.

StarFormationHistories.model_cmdFunction
new_mags [, good_idxs] = model_cmd(mags::AbstractVector{<:AbstractVector{<:Number}}, errfuncs, completefuncs; rng::Random.AbstractRNG=Random.default_rng(), ret_idxs::Bool=false)

Simple method for modelling photometric error and incompleteness to "mock observe" a pure catalog of stellar photometry, such as those produced by generate_stars_mass and generate_stars_mag. This method assumes Gaussian photometric errors and that the photometric error and completeness functions are separable by filter.

Arguments

  • mags::AbstractVector{<:AbstractVector{<:Number}}: a vector of vectors giving the magnitudes of each star to be modelled. The first index is the per-star index and the second index is the per-filter index (so mags[10][2] would give the magnitude of the tenth star in the second filter). This is the same format as the magnitudes returned by generate_stars_mass and generate_stars_mag; to use output from the composite versions, you must first reduce(vcat,mags) before passing to this function.
  • errfuncs: an iterable (typically a vector or tuple) of callables (typically functions or interpolators) with length equal to the number of filters contained in the elements of mags. This iterable must contain callables that, when called with the associated magnitudes from mags, will return the expected 1-σ photometric error at that magnitude. The organization is such that the photometric error for star i in band j is σ_ij = errfuncs[j](mags[i][j]).
  • completefuncs: an iterable (typically a vector or tuple) of callables (typically functions or interpolators) with length equal to the number of filters contained in the elements of mags. This iterable must contain callables that, when called with the associated magnitudes from mags, will return the probability that a star with that magnitude in that band will be found in your color-magnitude diagram (this should include the original detection probability and any post-detection quality, morphology, or other cuts). The organization is such that the detection probability for star i in band j is c_ij = completefuncs[j](mags[i][j]).

Keyword Arguments

  • rng::AbstractRNG=Random.default_rng(): The object to use for random number generation.
  • ret_idxs::Bool: whether to return the indices of the input mags for the stars that were successfully "observed" and are represented in the output new_mags.

Returns

  • new_mags: an object similar to mags (i.e., a Vector{Vector{<:Number}}, Vector{SVector{N,<:Number}}, etc.) containing the magnitudes of the mock-observed stars. This will be shorter than the provided mags vector as we are modelling photometric incompleteness, and the magnitudes will also have random photometric errors added to them. This can be reinterpreted as a 2-dimensional Matrix with reduce(hcat,new_mags).
  • good_idxs: if ret_idxs is true, the vector of indices into the input mags for the stars that were successfully "observed" and are represented in the output new_mags.

Notes

  • This is a simple implementation that seeks to show a simple example of how one can post-process catalogs of "pure" stars from methods like generate_stars_mass and generate_stars_mag to include observational effects. This method assumes Gaussian photometric errors, which may not, in general, be accurate. It also assumes that the total detection probability can be modelled as the product of the single-filter detection probabilities as computed by completefuncs (i.e., that the completeness functions are separable across filters). This can be a reasonable assumption when you have separate photometric catalogs derived for each filter and you only collate them afterwards, but it is generally not a good assumption for detection algorithms that operate on simultaneously on multi-band photometry – the completeness functions for these types of algorithms are generally not separable.
source

Developer Internals

StarFormationHistories.ingest_magsFunction
new_mags = ingest_mags(mini_vec::AbstractVector, mags::AbstractVector{T}) where {S <: Number, T <: AbstractVector{S}}
-new_mags = ingest_mags(mini_vec::AbstractVector, mags::AbstractMatrix{S}) where S <: Number

Reinterprets provided mags to be in the correct format for input to Interpolations.interpolate.

Returns

  • new_mags::Base.ReinterpretArray{StaticArrays.SVector}: a length(mini_vec) vector of StaticArrays.SVectors containing the same data as mags but formatted for input to Interpolations.interpolate.
source
StarFormationHistories.sort_ingestedFunction
(new_mini_vec, new_mags) = sort_ingested(mini_vec::AbstractVector, mags::AbstractVector)

Takes mini_vec and mags and ensures that mini_vec is sorted (sometimes in PARSEC isochrones they are not) and calls Interpolations.deduplicate_knots! on mini_vec to ensure there are no repeat entries. Arguments must satisfy length(mini_vec) == length(mags).

source
StarFormationHistories.mass_limitsFunction
(mmin, mmax) = mass_limits(mini_vec::AbstractVector{<:Number}, mags::AbstractVector{T},
+                        StarFormationHistories.RandomBinaryPairs(0.3))

Generates a random sample of stars from an isochrone defined by the provided initial stellar masses mini_vec, absolute magnitudes mags, and filter names mag_names with total population birth stellar mass limit (e.g., 1e5 solar masses). Initial stellar masses are sampled from the provided imf.

Arguments

  • mini_vec::AbstractVector{<:Number} contains the initial masses (in solar masses) for the stars in the isochrone; must be mutable as we call Interpolations.deduplicate_knots!(mini_vec).
  • mags contains the absolute magnitudes from the isochrone in the desired filters corresponding to the same stars as provided in mini_vec. mags is internally interpreted and converted into a standard format by StarFormationHistories.ingest_mags. Valid inputs are:
    • mags::AbstractVector{AbstractVector{<:Number}}, in which case the length of the outer vector length(mags) can either be equal to length(mini_vec), in which case the length of the inner vectors must all be equal to the number of filters you are providing, or the length of the outer vector can be equal to the number of filters you are providing, and the length of the inner vectors must all be equal to length(mini_vec); this is the more common use-case.
    • mags::AbstractMatrix{<:Number}, in which case mags must be 2-dimensional. Valid shapes are size(mags) == (length(mini_vec), nfilters) or size(mags) == (nfilters, length(mini_vec)), with nfilters being the number of filters you are providing.
  • mag_names::AbstractVector{String} contains strings describing the filters you are providing in mags; an example might be ["B","V"]. These are used when mag_lim is finite to determine what filter you want to use to limit the faintest stars you want returned.
  • limit::Number gives the total birth stellar mass of the population you want to sample. See the "Notes" section on population masses for more information.
  • imf::Distributions.Sampleable{Distributions.Univariate, Distributions.Continuous} is a sampleable continuous univariate distribution implementing a stellar initial mass function with a defined rand(rng::Random.AbstractRNG, imf) method to use for sampling masses. All instances of Distributions.ContinuousUnivariateDistribution are also valid. Implementations of commonly used IMFs are available in InitialMassFunctions.jl.

Keyword Arguments

  • dist_mod::Number=0 is the distance modulus (see StarFormationHistories.distance_modulus) you wish to have added to the returned magnitudes to simulate a population at a particular distance.
  • rng::Random.AbstractRNG=Random.default_rng() is the rng instance that will be used to sample the stellar initial masses from imf.
  • mag_lim::Number=Inf gives the faintest apparent magnitude for stars you want to be returned in the output. Stars fainter than this magnitude will still be sampled and contribute properly to the total mass of the population, but they will not be returned.
  • mag_lim_name::String="V" gives the filter name (as contained in mag_names) to use when considering if a star is fainter than mag_lim. This is unused if mag_lim is infinite.
  • binary_model::StarFormationHistories.AbstractBinaryModel=StarFormationHistories.RandomBinaryPairs(0.3) is an instance of a model for treating binaries; currently provided options are NoBinaries, RandomBinaryPairs, and BinaryMassRatio.

Returns

(sampled_masses, sampled_mags) defined as

  • sampled_masses::Vector{SVector{N,eltype(imf)}} is a vector containing the initial stellar masses of the stars sampled by sample_system; see that method's documentation for details on format. In short, each StaticArrays.SVector represents one stellar system and each entry in each StaticArrays.SVector is one star in that system. Entries will be 0 when companions could have been sampled but were not (i.e., when using a binary_model that supports multi-star systems).
  • sampled_mags::Vector{SVector{N,<:Number}} is a vector containing StaticArrays.SVectors with the multi-band magnitudes of the sampled stars. To get the magnitude of star i in band j, you index as sampled_mags[i][j]. This can be reinterpreted as a 2-dimensional Matrix with reduce(hcat,sampled_mags).

Notes

Population Masses

Given a particular isochrone with an initial mass vector mini_vec, it will never cover the full range of stellar birth masses because stars that die before present-day are not included in the isochrone. However, these stars were born, and so contribute to the total birth mass of the system. There are two ways to properly account for this lost mass when sampling:

  1. Set the upper limit for masses that can be sampled from the imf distribution to a physical value for the maximum birth mass of stars (e.g., 100 solar masses). In this case, these stars will be sampled from imf, and will contribute their masses to the system, but they will not be returned if their birth mass is greater than maximum(mini_vec). This is typically easiest for the user and only results in ∼15% loss of efficiency for 10 Gyr isochrones. This approach is preferred when sampling with binaries.
  2. Set the upper limit for masses that can be sampled from the imf distribution to maximum(mini_vec) and adjust limit to respect the amount of initial stellar mass lost by not sampling higher mass stars. This can be calculated as new_limit = limit * ( QuadGK.quadgk(x->x*pdf(imf,x), minimum(mini_vec), maximum(mini_vec))[1] / QuadGK.quadgk(x->x*pdf(imf,x), minimum(imf), maximum(imf))[1] ), with the multiplicative factor being the fraction of the population stellar mass contained in stars with initial masses between minimum(mini_vec) and maximum(mini_vec); this factor is the ratio

\[\frac{\int_a^b \ m \times \frac{dN(m)}{dm} \ dm}{\int_0^∞ \ m \times \frac{dN(m)}{dm} \ dm}.\]

Note that, if binaries are included, this approach only forms binary pairs between stars whose masses are less than maximum(mini_vec). This is probably not desired, so we recommend the previous approach when including binaries.

source
StarFormationHistories.generate_stars_magFunction
(sampled_masses, sampled_mags) =  generate_stars_mag(mini_vec::AbstractVector{<:Number}, mags, mag_names::AbstractVector{String}, absmag::Real, absmag_name::String, imf::Distributions.Sampleable{Distributions.Univariate,Distributions.Continuous}; dist_mod::Number=0, rng::AbstractRNG=default_rng(), mag_lim::Number=Inf, mag_lim_name::String="V", binary_model::StarFormationHistories.AbstractBinaryModel=RandomBinaryPairs(0.3))

Generates a mock stellar population from an isochrone defined by the provided initial stellar masses mini_vec, absolute magnitudes mags, and filter names mag_names. The population is sampled to a total absolute magnitude absmag::Real (e.g., -7 or -12) in the filter absmag_name::String (e.g., "V" or "F606W") which is contained in the provided mag_names::AbstractVector{String}. Other arguments are shared with generate_stars_mass, which contains the main documentation.

Notes

Population Magnitudes

Unlike when sampling a population to a fixed initial birth mass, as is implemented in generate_stars_mass, when generating a population up to a fixed absolute magnitude, only stars that survive to present-day contribute to the flux of the population. If you choose to limit the apparent magnitude of stars returned by passing the mag_lim and mag_lim_name keyword arguments, stars fainter than your chosen limit will still be sampled and will still contribute their luminosity to the total population, but they will not be contained in the returned output.

source

Complex Stellar Populations

StarFormationHistories.generate_stars_mass_compositeFunction
(sampled_masses, sampled_mags) = generate_stars_mass_composite(mini_vec::AbstractVector{<:AbstractVector{<:Number}}, mags::AbstractVector, mag_names::AbstractVector{String}, limit::Number, massfrac::AbstractVector{<:Number}, imf::Sampleable{Univariate,Continuous}; kws...)

Generates a random sample of stars with a complex star formation history using multiple isochrones. Very similar to generate_stars_mass except the isochrone-related arguments mini_vec and mags should now be vectors of vectors containing the relevant data for the full set of isochrones to be considered. The total birth stellar mass of the sampled population is given by limit. The proportion of this mass allotted to each of the individual isochrones is given by the entries of the massfrac vector. This basically just proportions limit according to massfrac and calls generate_stars_mass for each of the individual stellar populations; as such it is set up to multi-thread across the multiple stellar populations.

Arguments

  • mini_vec::AbstractVector{<:AbstractVector{<:Number}} contains the initial masses (in solar masses) for the stars in each isochrone; the internal vectors must be mutable as we will call Interpolations.deduplicate_knots! on each. The length of mini_vec should be equal to the number of isochrones.
  • mags contains the absolute magnitudes from the isochrones in the desired filters corresponding to the same stars as provided in mini_vec. The length of mags should be equal to the number of isochrones. The individual elements of mags are each internally interpreted and converted into a standard format by StarFormationHistories.ingest_mags. The valid formats for the individual elements of mags are:
    • AbstractVector{AbstractVector{<:Number}}, in which case the length of the vector length(mags[i]) can either be equal to length(mini_vec[i]), in which case the length of the inner vectors must all be equal to the number of filters you are providing, or the length of the outer vector can be equal to the number of filters you are providing, and the length of the inner vectors must all be equal to length(mini_vec[i]); this is the more common use-case.
    • AbstractMatrix{<:Number}, in which case mags[i] must be 2-dimensional. Valid shapes are size(mags[i]) == (length(mini_vec[i]), nfilters) or size(mags[i]) == (nfilters, length(mini_vec[i])), with nfilters being the number of filters you are providing.
  • mag_names::AbstractVector{String} contains strings describing the filters you are providing in mags; an example might be ["B","V"]. These are used when mag_lim is finite to determine what filter you want to use to limit the faintest stars you want returned. These are assumed to be the same for all isochrones.
  • limit::Number gives the total birth stellar mass of the population you want to sample.
  • massfrac::AbstractVector{<:Number} is vector giving the relative fraction of mass allotted to each individual stellar population; length must be equal to the length of mini_vec and mags.
  • imf::Distributions.Sampleable{Distributions.Univariate, Distributions.Continuous} is a sampleable continuous univariate distribution implementing a stellar initial mass function with a defined rand(rng::Random.AbstractRNG, imf) method to use for sampling masses. All instances of Distributions.ContinuousUnivariateDistribution are also valid. Implementations of commonly used IMFs are available in InitialMassFunctions.jl.

Keyword Arguments

All keyword arguments kws... are passed to generate_stars_mass; you should refer to that method's documentation for more information.

Returns

  • sampled_masses::Vector{Vector{SVector{N,eltype(imf)}}} is a vector of vectors containing the initial stellar masses of the sampled stars. The outer vectors are separated by the isochrone the stars were generated from; i.e., all of sampled_masses[1] were sampled from mini_vec[1] and so on. These can be concatenated into a single vector with reduce(vcat,sampled_masses). The format of the contained StaticArrays.SVectors are as output from sample_system; see that method's documentation for more details.
  • sampled_mags::Vector{Vector{SVector{N,<:Number}}} is a vector of vectors containing StaticArrays.SVectors with the multi-band magnitudes of the sampled stars. The outer vectors are separated by the isochrone the stars were generated from; i.e. all of sampled_mags[1] were sampled from mags[1] and so on. To get the magnitude of star i in band j sampled from isochrone k, you would do sampled_mags[k][i][j]. This can be concatenated into a Vector{SVector} with reduce(vcat,sampled_mags) and a 2-D Matrix with reduce(hcat,reduce(vcat,sampled_mags)).
source
StarFormationHistories.generate_stars_mag_compositeFunction
(sampled_masses, sampled_mags) = generate_stars_mag_composite(mini_vec::AbstractVector{<:AbstractVector{<:Number}}, mags::AbstractVector, mag_names::AbstractVector{String}, absmag::Number, absmag_name::String, fracs::AbstractVector{<:Number}, imf::Sampleable{Univariate,Continuous}; frac_type::String="lum", kws...)

Generates a random sample of stars with a complex star formation history using multiple isochrones. Very similar to generate_stars_mag except the isochrone-related arguments mini_vec and mags should now be vectors of vectors containing the relevant data for the full set of isochrones to be considered. The total absolute magnitude of the sampled population is given by absmag. The proportion of the luminosity allotted to each of the individual isochrones is given by the entries of the frac vector. This basically just proportions the luminosity according to frac and calls generate_stars_mag for each of the individual stellar populations; as such it is set up to multi-thread across the multiple stellar populations.

Arguments

  • mini_vec::AbstractVector{<:AbstractVector{<:Number}} contains the initial masses (in solar masses) for the stars in each isochrone; the internal vectors must be mutable as we will call Interpolations.deduplicate_knots! on each. The length of mini_vec should be equal to the number of isochrones.
  • mags contains the absolute magnitudes from the isochrones in the desired filters corresponding to the same stars as provided in mini_vec. The length of mags should be equal to the number of isochrones. The individual elements of mags are each internally interpreted and converted into a standard format by StarFormationHistories.ingest_mags. The valid formats for the individual elements of mags are:
    • AbstractVector{AbstractVector{<:Number}}, in which case the length of the vector length(mags[i]) can either be equal to length(mini_vec[i]), in which case the length of the inner vectors must all be equal to the number of filters you are providing, or the length of the outer vector can be equal to the number of filters you are providing, and the length of the inner vectors must all be equal to length(mini_vec[i]); this is the more common use-case.
    • AbstractMatrix{<:Number}, in which case mags[i] must be 2-dimensional. Valid shapes are size(mags[i]) == (length(mini_vec[i]), nfilters) or size(mags[i]) == (nfilters, length(mini_vec[i])), with nfilters being the number of filters you are providing.
  • mag_names::AbstractVector{String} contains strings describing the filters you are providing in mags; an example might be ["B","V"]. These are used when mag_lim is finite to determine what filter you want to use to limit the faintest stars you want returned. These are assumed to be the same for all isochrones.
  • absmag::Number gives the total absolute magnitude of the complex population to be sampled.
  • fracs::AbstractVector{<:Number} is a vector giving the relative fraction of luminosity or mass (determined by the frac_type keyword argument) allotted to each individual stellar population; length must be equal to the length of mini_vec and mags.
  • imf::Distributions.Sampleable{Distributions.Univariate, Distributions.Continuous} is a sampleable continuous univariate distribution implementing a stellar initial mass function with a defined rand(rng::Random.AbstractRNG, imf) method to use for sampling masses. All instances of Distributions.ContinuousUnivariateDistribution are also valid. Implementations of commonly used IMFs are available in InitialMassFunctions.jl.

Keyword Arguments

  • frac_type::String either "lum", in which case fracs is assumed to contain the relative luminosity fractions for each individual isochrone, or "mass", in which case it is assumed that fracs contains mass fractions ("mass" is not yet implemented).

All other keyword arguments kws... are passed to generate_stars_mag; you should refer to that method's documentation for more information.

Returns

  • sampled_masses::Vector{Vector{SVector{N,eltype(imf)}}} is a vector of vectors containing the initial stellar masses of the sampled stars. The outer vectors are separated by the isochrone the stars were generated from; i.e., all of sampled_masses[1] were sampled from mini_vec[1] and so on. These can be concatenated into a single vector with reduce(vcat,sampled_masses). The format of the contained StaticArrays.SVectors are as output from sample_system; see that method's documentation for more details.
  • sampled_mags::Vector{Vector{SVector{N,<:Number}}} is a vector of vectors containing StaticArrays.SVectors with the multi-band magnitudes of the sampled stars. The outer vectors are separated by the isochrone the stars were generated from; i.e. all of sampled_mags[1] were sampled from mags[1] and so on. To get the magnitude of star i in band j sampled from isochrone k, you would do sampled_mags[k][i][j]. This can be concatenated into a Vector{SVector} with reduce(vcat,sampled_mags) and a 2-D Matrix with reduce(hcat,reduce(vcat,sampled_mags)).
source

Observational Effects

The output produced from the above methods are clean in the sense that they do not include any observational effects like photometric error or incompleteness. These effects should be implemented in a post-processing step. We provide a simple method model_cmd that accepts user-defined photometric error and completeness functions and applies them to the initial catalog, returning a Monte Carlo realization of a possible observed catalog. This method assumes Gaussian photometric errors and that the photometric error and completeness functions are separable by filter – these assumptions are not applicable for all types of data, but the source code for the method is exceedingly simple (~20 lines) and should provide an example for how you could write a similar method that more accurately reflects your data.

StarFormationHistories.model_cmdFunction
new_mags [, good_idxs] = model_cmd(mags::AbstractVector{<:AbstractVector{<:Number}}, errfuncs, completefuncs; rng::Random.AbstractRNG=Random.default_rng(), ret_idxs::Bool=false)

Simple method for modelling photometric error and incompleteness to "mock observe" a pure catalog of stellar photometry, such as those produced by generate_stars_mass and generate_stars_mag. This method assumes Gaussian photometric errors and that the photometric error and completeness functions are separable by filter.

Arguments

  • mags::AbstractVector{<:AbstractVector{<:Number}}: a vector of vectors giving the magnitudes of each star to be modelled. The first index is the per-star index and the second index is the per-filter index (so mags[10][2] would give the magnitude of the tenth star in the second filter). This is the same format as the magnitudes returned by generate_stars_mass and generate_stars_mag; to use output from the composite versions, you must first reduce(vcat,mags) before passing to this function.
  • errfuncs: an iterable (typically a vector or tuple) of callables (typically functions or interpolators) with length equal to the number of filters contained in the elements of mags. This iterable must contain callables that, when called with the associated magnitudes from mags, will return the expected 1-σ photometric error at that magnitude. The organization is such that the photometric error for star i in band j is σ_ij = errfuncs[j](mags[i][j]).
  • completefuncs: an iterable (typically a vector or tuple) of callables (typically functions or interpolators) with length equal to the number of filters contained in the elements of mags. This iterable must contain callables that, when called with the associated magnitudes from mags, will return the probability that a star with that magnitude in that band will be found in your color-magnitude diagram (this should include the original detection probability and any post-detection quality, morphology, or other cuts). The organization is such that the detection probability for star i in band j is c_ij = completefuncs[j](mags[i][j]).

Keyword Arguments

  • rng::AbstractRNG=Random.default_rng(): The object to use for random number generation.
  • ret_idxs::Bool: whether to return the indices of the input mags for the stars that were successfully "observed" and are represented in the output new_mags.

Returns

  • new_mags: an object similar to mags (i.e., a Vector{Vector{<:Number}}, Vector{SVector{N,<:Number}}, etc.) containing the magnitudes of the mock-observed stars. This will be shorter than the provided mags vector as we are modelling photometric incompleteness, and the magnitudes will also have random photometric errors added to them. This can be reinterpreted as a 2-dimensional Matrix with reduce(hcat,new_mags).
  • good_idxs: if ret_idxs is true, the vector of indices into the input mags for the stars that were successfully "observed" and are represented in the output new_mags.

Notes

  • This is a simple implementation that seeks to show a simple example of how one can post-process catalogs of "pure" stars from methods like generate_stars_mass and generate_stars_mag to include observational effects. This method assumes Gaussian photometric errors, which may not, in general, be accurate. It also assumes that the total detection probability can be modelled as the product of the single-filter detection probabilities as computed by completefuncs (i.e., that the completeness functions are separable across filters). This can be a reasonable assumption when you have separate photometric catalogs derived for each filter and you only collate them afterwards, but it is generally not a good assumption for detection algorithms that operate on simultaneously on multi-band photometry – the completeness functions for these types of algorithms are generally not separable.
source

Developer Internals

StarFormationHistories.ingest_magsFunction
new_mags = ingest_mags(mini_vec::AbstractVector, mags::AbstractVector{T}) where {S <: Number, T <: AbstractVector{S}}
+new_mags = ingest_mags(mini_vec::AbstractVector, mags::AbstractMatrix{S}) where S <: Number

Reinterprets provided mags to be in the correct format for input to Interpolations.interpolate.

Returns

  • new_mags::Base.ReinterpretArray{StaticArrays.SVector}: a length(mini_vec) vector of StaticArrays.SVectors containing the same data as mags but formatted for input to Interpolations.interpolate.
source
StarFormationHistories.sort_ingestedFunction
(new_mini_vec, new_mags) = sort_ingested(mini_vec::AbstractVector, mags::AbstractVector)

Takes mini_vec and mags and ensures that mini_vec is sorted (sometimes in PARSEC isochrones they are not) and calls Interpolations.deduplicate_knots! on mini_vec to ensure there are no repeat entries. Arguments must satisfy length(mini_vec) == length(mags).

source
StarFormationHistories.mass_limitsFunction
(mmin, mmax) = mass_limits(mini_vec::AbstractVector{<:Number}, mags::AbstractVector{T},
                  mag_names::AbstractVector{String}, mag_lim::Number,
                  mag_lim_name::String) where T <: AbstractVector{<:Number}

Calculates initial mass limits that reflect a given faint-end magnitude limit.

Arguments

  • mini_vec::AbstractVector{<:Number}: a length nstars vector containing initial stellar masses.
  • mags::AbstractVector{<:AbstractVector{<:Number}}: a length nstars vector, with each element being a length nfilters vector giving the magnitudes of each star in the filters mag_names.
  • mag_names::AbstractVector{String}: a vector giving the names of each filter as strings.
  • mag_lim::Number: the faint-end magnitude limit you wish to use.
  • mag_lim_name::String: the name of the filter in which mag_lim is to be applied. Must be contained in mag_names.

Returns

  • mmin::eltype(mini_vec): the initial mass corresponding to your requested mag_lim in the filter mag_lim_name. If all stars provided are brighter than your requested mag_lim, then this will be equal to minimum(mini_vec).
  • mmax::eltype(mini_vec): the maximum valid mass in mini_vec; simply maximum(mini_vec).

Examples

julia> mass_limits([0.05,0.1,0.2,0.3], [[4.0],[3.0],[2.0],[1.0]], ["F090W"], 2.5, "F090W")
 (0.15, 0.3)
 
 julia> mass_limits([0.05,0.1,0.2,0.3], [[4.0,3.0],[3.0,2.0],[2.0,1.0],[1.0,0.0]], ["F090W","F150W"], 2.5, "F090W")
-(0.15, 0.3)
source
+(0.15, 0.3)source diff --git a/dev/template_compare_binaries.svg b/dev/template_compare_binaries.svg index 5b25b49..ef20873 100644 --- a/dev/template_compare_binaries.svg +++ b/dev/template_compare_binaries.svg @@ -6,7 +6,7 @@ - 2025-01-25T15:07:47.694884 + 2025-01-25T17:51:26.171175 image/svg+xml @@ -38,17 +38,17 @@ z " style="fill: #ffffff"/>
+iVBORw0KGgoAAAANSUhEUgAAAWUAAAF9CAYAAADcAHlNAADdj0lEQVR4nOz953Mk2bblif0cWiMgE6kzK0vduvK9109193CGY0PSyA/kP0thNM5Mz3Rz2N1PXH1LZ6VOaCCgNYIf9l5YJyKBTGTpyvRjBkMgwv34cQ/4OtvXXnudqtVqUbe6/RCtqqpuYAjYbbVaJz/0eOpWtx9D6/qhB1C3t7oNAWP5+6WtqqruqqpGE8gvfK9udfuptxqUf2TtLQOaXWAzf7+qnQfgZ++9znX7qV7jn+q46/Z6reeHHkDdXmgCGoCtH3Ig33VrtVonVVXtEqD6Kgpjt+N353svvW4lVVJs21VV1SnfkD75HmmYt+Z/421uNSj/+Np54PMmtzagSYAbyb+3BXL5uw2IyvcS3OHi61YeZz+P0aVjaXIggbUA2n1ggAJwO8a4C0wDfcBIVVUrndurdUwMXbnfSqvVOnrZBaqqqje3XaN4sijG0QWcltfrvGNedsKouf4fttWg/CNr54HPG946wXQIuJKvT7nktbjEdeuMqntoB8gR2gF6Nrc5BUaBnaqqNoHt3O4dYC+POZp9D9JOCXaOp5wYGsCHwKfAkwJ4zwPpWeBu9r1APlkU46iIyeO4qqplYLMA0xHiei5XVXVM+6QzQkwmU8AqcJjnV0fkP2CrQbluP2g7B0x3gcXi9VnrjODOi+hetg0BXLNExHmMgXmYAKXT3EagfYoBe5YArAf5+QGwk58rUgVH1gNVVY0BipwF1rvFPl3AaFVV4wQI3gWmqqo6BOaBqzmu/fyZICaAveyrJ8f2FOgH3gNuA/9SVdU2AfKHua24+K6qqrqAGQKQ3wOuAc+Bz4D1HDPAYVVVV7lENH/Z1vF9aFyvHZG/7Enmp95qUK7bD97OAdeNCzbtjOBKbljbCHAWs5+zbYiIcY4A1s3cvocA3D0CWAcwYHQREW0LA+AYAeLHud0VHGUv5H6zBHgOEqA6kNv3Ast5rC4C5Huyjz3gBLgJjBPgeA14lP0OAXeIieALAoyuF2PZBN7PY0wB/y77eJpjOiVAfQKYzOMeE8Bc5fXURKVrcC/HMFpV1f2OCJvcprxenWArmmgkz1UTRU+evyY/MHV1Lkif85m+V9E30BHV/1RpmBqU6/ZjaJd9XO6kOvS7hwAs0QkQQD2OwU/blY/1mwQQ7eQ2Z4/3BEj0EgB/QEScOt50/j7Isb9DgHB3Hv8gX5Pv9+W+wwQALmUfA/n3BhG9DxKTyVxuP5nj/032swo8y/5H8nxaGJQW8hxuAB9lX5sEsLbwU8EBEQ0PEhPIao53kXYwncyx7OXfG8T39BEB+Ot4shKdQo7nevY/nH0u5vj68v3R3G4D6MnviqKPl1E/W/i7OHuyqapqgph8NFmc5QzO6e+V7YcC9RqU6/ZjaJdKbnZSHQV4jhPAsZN9iDceJW7SeeLm3cjX27RHeCVtMZKP/hDAeUIA8mf4Rq/y9SkBemu5v+iMjXwt+uOUAMHbBEgc5PZdRFR7A/gqj7md/Wl8s0T0fEiAZ1/2M5r9bGUfFRFhL+b+K9n/rezzWR5HoDiY53ua+ynifkRMMisEmPfmZ1eSxx4jgPqIiPo18YkmURR8M8e4RkxCT/P9G3nMudx/nZj4uvKaQQBsL6Zctun4H+lI8p4STxuacHqBZv5cKLm8BOj+INx6Dcp1+8Hbt5DcFOgoMhIYbuEbWjf4MeZ/S2AfpT3B2EUAzilxo48TQDlJgOMGATYjBMXRm5+LOtkmwPKIAKzjHE8XAYgtAqjeIcBvL7f7MD87JQBsMt9fI6JZUSjv53l9QYDPAAakfYKiuZbH3yLAuC+vw3pu+xx4QoDhjTynj/I6bBIT0l72/T4G3EEMrrqWV4nJQud1msdbzzHdzmszRQD+M2KCFH/dRYD4BKZ8xvNYD2l/iulsykOIuhrJY27ne3NVVe1nH6VC5TzlTwnSP4gSqgbluv3kWwGs3Tjq7ZSxlQm2M6UFngzKBKMSghDR3EC+Hs39Bgmw+jkBPFeJKE0899UcxzQB3MtEZHiVSMhtZh9HBADtEoB4jYgwl4hH/S8IcDkkgL8igPk+AZglcJRUgqLXtXx/lgDeu/lbx+zN7d/Nv29hFcZDArBm8jyGct+t/DklAPhRfvZzArjJcQ1l3+/l75087x1iElnMPjRZbmKA38KRPsU2cA54lnmI/J5PickGYjK4lmNapl3Rc57y5wykX1NH/621GpTr9qNuVVX1E0D1pNVqHbxs246I+yj3L7P9p8RNt00+1uZj8mx+vpk3Ysl3bubPEAGWozjq6yeAbyG3/zI/myOAfZygPZoEqF7P7VpE1PYucQ8u5DZ7mILoJQB1HlMGPZiPPSRVHrntdSKqvpl9PSQAsATII5wUXCai3etEQk+8+n7+nqVdMfI8z3+bALwbRLQNMSFtAv9MTFILxAQ0lGOr8pw+ISJhRc6jBKjv5DiWiQh6O7+HBRztAvRVVXUTR+vzwMYFhUFzea7HOR6pa7ryO9ekXT6hiUvfL9773igMnUcNynX7sbebBGhAgN7rtvKmUrQMlszNEVHeCnA/VRxdBMiUj7qiOHYJcNshgPELAiyVDBQQbBI3tyL37dz2NgEIh/lzmvtL1TGSvx8RoDWTn/0u+7lJgNoQATRV/n2DoAYGCVDeJiaCa1jFsZLH/HcEaHfnuT4kJoSD3O8wjzua+yjKbWE+ejj3v0t8P13AxwQdI433Bn4yWMNyvv48z+k8pxt5jZ8DvwVmq6paabVaR/l9zOR+t3DUvUNwz9fxZDWf10WRfTPH+Gl+J3M5BtFII1VVLRXfsXIGA8BRgqQSxd+Iwrhk0nAIGKtBuW4/9vak/P06GfHOmypB+JQAq6GqqgQUTSJKA/PK8xfonBdzW2X4IaLR49zukACjZQKwGgRYduV7m/n3cwLwJAtrEUCznvsPE1HlB/neF5gGuUlMDF153CkCiFoEwD4jgGeaAMj+PC+pLIZ0DfLYArl1Ihq+lsdu5PmO5jF+RwC3omAB//UcjyL/U4JimcjzgJhYBPaf5ji+zGt0mMdfwpz6bFVVn+Z+Y9nvFgHO85hKupl9Hef12Qce57lO5L6TOVbJFKUyGcfUERQa8uJ7H6G9GAf4WsqMy0Tcu1DTF3X7EbSX/YMnZVFGyK/zOHneTSUFwTi+sdcIkCzbeTwjBOA0sZLgiACCXSIK3icSXaMEGF4nwGGPAI3Huf8JAUSK6IYJABXdME+AyXx+/gQrMu4TEfKf8jyu0c47S8Hxixyf1A43CQpBnLQAU5H8UwK0rhDg2cwx/jzP7TkBqKu5/SqBIU+xquQKLs45zPEc5DUQeN/I85rI/luE+kTFMePZ91723yiu8RGOeJ8QE5smgqG8hq3s/wEuTx/APPZ2/h4mAHiU9kl7DEvr4Pwo+dz/w5f8L78yaSj6rQbluv0Y2usA7aUy4hc9euaNt42r+CSjo0wYveJ4AnZFqidERDtLgERv8dMiAOE+LtmWpEwc7WG+1599LxOAKMXHEX7UPyUi2hEiYl3DAHmafZwSQF0RfOr/TES6N7OP+3mcLcyfHuPouDuvy6McW4sAyJu57ZX87C7tk9q93L+fiNhX8vV69t2V120zx76U269gCmQ8z3eKmHT6iO9E5z2Q4xknJjjyGEu5/zAvcsND+bMpDrmQPXYWn5zt26kKKgD3MM9D8suyvUzRcSlOugblun1r7RuI7V8JtJ3/3LKxfMmxLnz0xJHSPmkkBJxe0jFOVX5SXDwlAHWIAOdn+XuaAMQpXBZ9NX9vkYnI3O8WAYRPCcBbJ4BrKT+fAP4++2kRYDROKBukme4hIsGj3P8mEd3+Pvv5iohY7xARuOSCPdm/qgkncdHJTJ7rQvY5SCgsdM1u5n73CaBSVaKSk7dz2618ry+vj/q8SYB5M3/G8jij2U8P8T/RyPM8zrENE0At0OzJsfbm9pv5PUl5sUlEzfv5PyN1DrlvL1FSrgTvGa9Me5OPiF7Pt1qt9Y5tzqNAXitRWINy3b7N9sp/wPOA+5I65c6+X3WsC4G+o+hkvNh/LMdYVqdRvO4iEllKUp3k/s38TEUhszm+BQKMbmLd7ToBhuKlZ/K11B1jeYw/5/ujuGqwL997ToDTCU7+Xc/jCyCv5XsnxGP+FhFRSr3RnceWTK5FTC6HwOcECP6KiHif5Pa/xODawDrmruxbj/1Pc8x9mBbZIqL5K1h9Id30Hi4ln8nthogIeja3G8C0yXFuJ/22KhN7iQj+WZ67StvHsj9NXsf4Keo491eVpsrBS5WGQFwR9SqW7bW116RAzm01KNft22yX+Qf8uhKji0qszz3WaxSkiGNU9CxZ1RVcgKLop4cAqyf40Vk39gKmGB4TN/EaEXl+ktuWsq3hPJ54ZT22twiQ7Qf+gCVm45hL/VUedx0XjihheVCc030C6CWTm87xj9Jehryd+61ilcZviCi/iTnf3+Y2Y0RC7vcEOL5PAOFOjnMyz7fKY/w9ocxQxeNAHmMi+/4QVxQe5jkf5Haid3pyPKfERHI7+/9Dfh/i8EdyPCr8UdJTE+1x8b3of2c4Xx/n9yd/jiFMuai/Rc5/+irb2f/m1ymMqkG5bt9au+Q/4NeqkrqoxPq1BvhiOwPic7yZFzHfKACTxngLA4Uq+AawsdE88cg8TYDHg1ar9QxYzejrSn62jvXQvyZA4PcEIOnxfCqPp/4kudMkAfa8ENf9PxDg8gcCqCoC6CQZe0pE3A2sxnhOgHgP8L8nQGuD4Hrl5fEZAdZ7WHN9hwAsKU4q/KTQIgD0IF9/jFUsjRz7aH5+F6s21gmOXhH053nug8C/yT62cdSuBOIhkUQU/aInnCYGXU2K+l7b/geSwlA0vYKj6ztE1C2544WtLGZ6BcV27pNjDcp1+17bj8kv+qKxKOGXyaAh/Pjal5socSSzHVWKlYZIehrYwVzmLgEuN3O/a1g7/IAA0KN87yZO9G0QEd8oEfl+QfDTGzm2QwK81wjw685jrRMytcEc43sEGG5gT41G7vc0x/q3ObbjPPaH2c/nwM8IsPwit5Hm+g/Fe/s5/jGCKx+gfVJpEIBf4ai4J8d3nNdQWuOevMZ6AmkRE1U3AdZl+fZO7j9NAO1R/nQToP0kx9SHn4j68r1Sq1wGDXqSWCMmlJnsc4jLKS7EQcux8Lz2wpNjDcp1+8m378HN6zSTi+O48k3Rs3wqtgng1E19iotJIEBUwLNKRHkqxniElRkqwZ4ibmr5XWwTQHRIPJ7fJfjepwRwqdjjGa4EnMKP5Dfyd28e628IwG3keJYJPNgj6JdpAoCe5XHF0R4TAPM77PT2ZfZ9lwDkZm4nBch+/m4QIDqYx/iXHPdm7iO+eyeP0SCA88Mc1/+a13eCmLAOceWjJp17uJJwIa/9RB7vANMXx9iIabCqKpWLg6mOKyRgtlqt+VzkYIioBD2vihBeP+B4oYqwBuW6vQntm9wUl+o3DW1GcAGI3MfkN7GP+UdFYnP5s0OAy9/RXuo8io2MFnAV4AjB4Q4VP43s/1r2eYOImuWydkQA3jQG7lIHLHc8qTPGiWj5OhEBD+S5zeQ5SSv8aR7rFgFq4ntPMWXQS4DhBwT4/kvuu4SLamR4JMc+GWA/zXMbJKiRx3jyUlQ8mue2SpRySxPdk9djN/vVpNFL/B80sXWqHPWe4uh8iQDlvrym0wT4b2Ad+xbxpFO61kH7/9x55dnQnqe4qLVVEUINynV7M9rX4qlfo19FgdcI8DwlSrA3cmWOK3gpqBECBJeI6PhnxKP/FKYrHhCP05PEza+bW3RJFwF2ktnt4ZJrCGDR4/+dHBtEBKjKxNnse4S44UWz7OFiisM8tw9zrE+JiaGBZWmq9Dsu3v8AF3JICTFAANsAAYDPCCCVVE6Tw3peP5VrX82fD7Db3jY2dXpCJBj/igBPgfUqTsrNY86/SUTuK7l9P5FoXcLFKCt57Vfy+tzJ8Yl+WsFKi508P9FVYDmlgLizPLsXL+31Kprjhf/dGpTr9pNv3xVPXbiESZYlV7Ur2G1MpdobmBNVAYOSRaIBjglwGM8+dogbeYy48e8TgDSWx5kgbtYlXBDynAA2PWIPEYD2JMfyl+xfkrcTgh45ynG+Q9hznuAlrfbz8+cEcB5hu1LpmQV4K8SEcAWrPfYJCd8aEXn3E5H1HF7KahNX40l+pjLomwQI7+V7N/N4RxicN/I7+E2ex1dYNXOMaZFHOJH5ETEpbOX7mgQF4HqqIK/nIbn0VVVVuuaadA5w7qAzWdipTZ7GmvR53F54ojvvf7cG5brV7eVtiACZXuCPWHuryEbJvwniBnyOb1jpag+ISHmJAPg72NBHkd8+drDbJgBP1WNgI/v+/Ps4+1CZ916O5Ua+Lz+LwzzuLgHqvyEi6yamYGYIoJ/MsWznvvKh+JwADgG26IDnuIqwi+CZnxBKkgOsId7Pa/OQiHglL9vDNqjzBNBqclvKY6p0XRLEubzWmhB13a4SE87zHM8+XgBAycJB4nssj9+F6SUITxSw8kZ5g+G8lvIrEVUh1Qa4sGQtt1+jvV3qia4G5brVraN1JHF2iZutm7iZISVRRXWYfJjLm+0Yy8pU0i3fjF1MSTQJQLyOvTjAvhFKrD3J95/i6jVFfSoukRytiUFwl4jmPsi+T3K7HeydsZbbPyZ8LkoFyb0c98M8778h6IA+XFGo5akmCWpGVXvSFSv5+Nd4NRMwh/tp/pay4QpeTED6Y0XH4oqncUFOkwDv28Sk9JiYWH6XY76VYz3EwFzquDWJnmKZ30GOWcAqCeIcLnBpcn7rw5Pkmd1sh+zywuR0Dcp1q1vR8maZxfeGpGVd+VuqCPS71WptFPuLmhgmQGKHiK60zTpxwzax74OicZUM38ErpEjR0SAmgFs5Bkns9JgNATpfYYN+Rd5SXfQSQLSJjYs0toqgDaawGkLcqnTRvyESiKMEgDYIsP6SiCansYXobaxAOQT+OwLQviJAmOIcu4gIejg/F1+tp4PhfL2Q5zKaY13AS299jD03xGOriOSDPNZn2CtaTyCn2GdbShVxy2t5Hj04kThNAPwYflIQxVMm9c7ojNddaqoG5brVrb0N4eIBcYdT+Zn4SUXISvic16T7FRe6n/1+RICdPJMFqHIwGyNufGX/D4jorpHHX8ca3PV8rzv3UwXgDSJy1s1e0iFNIgpt4MVV1Vaw49oNbCf6AFfAPcCAKa+JJhGB38LR/gkBkAeYIx/FhR6qXtwo9quw+uMQUwtL+V4PrkpcxxagT4kqx/83MaGU+uwq99/A1NJajrkHm0hJJXK9OKcPaV8/sFTM7ONS+Re44Y5S69eyAahBuW51a29tJbJFdR94VexhbGgzkDeg6I6yQmw5KY5x7M/wt/n5vxI3uxKDO7nNOgEifdg5TZHjYB5TxjxdOAm1gr2Pj7DZ0C28LNQoAbZzmE+9gcHlMfFYPk6A2T/ndis55lUCmKR53iGA7jkRjU7ipZeWMHhfx3TKEO0TyxheYPUzQq0yTQBZhSe3PlyZKB3yr3Pc/5B97WEjJZWNQ9AmMg5S0nIMU0AfYXXIR1gSRx6zmecxmWOV9O74Jbp4qTMOi8Ih8P/JC61eeaRudTunXVDOvQFnNw0E+ImrVTTdIG7CpQ4Xu0OscFBV4CGRmGpiCd0B7QAr7wfZeY7T7kQnlcJdojT7OQHuvyLARoUO1wlA+YJI2O3hYou/wi52X2WfA7icGALY+/O4AtnF7Otevr6XY98nwFitO89N+t4v8rhdBLVwgsuuV7F07zivWU/uv4o1yeM4Qi8nsqHc9nYeQ2XYv8Sa7b9g9cuN3H8SmzL9M/EksENMEiO5fTfFclL4CWcfLuSHJZObxPI6aPfm7qQvhqhXHqnb2946b6hXVAeelc2mbEoRsuRvPcQSQ7p5RzA90UeA+/8dm9fvwdnagQ38iL9BAM0iAeDz+SMZXUVEwJJ4qRJvhgCfKvtQReBVAqRV0PEwj9uLPSj6CJCUMuMUS9W02spzrBbpyTGK5tBqJF9hhYqq5zaJp4RjAswniISiJhwl035NgOwD4kliBq8afopXHxHfO55jkunTRvbdJCYQaZKbmL65iYtGmjn2QyxbXMy+lTDtwosUPM//kUPSea7ju+6pqkpmS2cyOV4sIHnp6xqU6/a2t86Ey+tUB5bbLmFpVhc2JTokQGONAKun+fkcpiYEYntEpAdOPH2JE20DeDVtmeTP4iINCJAaIJKFA7nNFAHOcojbJqLO/hznEZE0a2DJ2e/wiiEqQHlMUAz/iM2HbuRxpzAf35Xn/hnma/uxm90JoSYRZ6vEoyJjHW8wr8NW7q9E3+eY5pBMTWv0XScAX9K+LqxbllH/LsFHy0f6Sf5IQjiNvaTHsDvgZoLwIY6aVQK/mdvKXVCmRUO0u8qV/1PlE5WepHZrUK7b2946Ey4v05J2ZtjLaKiLAKY5LGNbwsY6fcWqF0MEmE7nzwpxEy/k/tfz9TZe5ukUGyCJUhGFcia7IkD8HZwYRMcnQGgNr9BRcr/XiMlD5eLjefzPCED6CPOpQ0QibZUAUSXTVJZ8C/O297Di4TjHoMTnGNYjz+d4ruU53cJPGe/hFUf0BDGa23yJTfVv5nFEA32efQzgKkCpXCQzlFZ8JH/ey2svj+ux4rvpyu9mAGuvN/FT1iEu276O3epepkvWMaSLriPlur3d7XUsQc/btsiyD+GqOJXz3salyKU8SlI2RbwCnycEqOzjwgipEZ4SoCJuU1TKIY7Ie3DJs8qGGwSYjeHVqw8J8Nfj/TABMOK+pwlQ2c99hgkwvUHwqX/Esr9Vgga5m8fbz+P1Af8XnJQ8xcmzkzzebl7Pz3Bxxx4u7BCN8wviCWQXR9RrWKGhSHwOa6MPctspTLEMYJroWfY5SfuirOT5LGXf3bntcHF9p3Dp+QOAqqomiu9KeYLTziWgOkqwVfgzgp+k6ki5bt9O+x6c2r6zlmOX9nj7JSsXi4rQDQXt/hhlye1tAnwOsc/xkJa0r6rqOfa6UMk0eLHST/FSUdvYwrMLV9zpWBWR0NLj/xEBhPtE5NlNYVOZx+klgOZm9q0KtCNiArhGgOQQAfpaamqSoDEmiQnkKM9TxSOqlpPiBKIEezTHcZLH7s/P7+U1kueylCD3CNB7kuMWYPfnZ7u57TQ2clKxTT9OsHYTE8BBjuEKMZFMZb9HBCCfYIc+VTeeEtH2KDExnOY1UtQ8kee3k/2O5GeP8P9CZ+sswVZC8OxJqgblun1b7XW42O+0fc3l31Uie5oyuHJ/nZs4zq60cexcWeIojz+Ck28qDlGiaiyTQWt4xRFxyzPEjS3nuGPsF/EcrzLSR4D15wT4/JJ47F4mAEfJM5UYt3KMn2MA1aTyGEfmf5uf/Z4Apn7sWbFEgNAcXiVEFXUPCCC/i+0wdd1W8tpKHaLE6DCO5P8KR9MPsVfyzwhwPMR2mzIw+iLHdZ2YQP4lxwFeuWU6+1rIazCDV43ZwKuXDGCJoOSIKgF/lMeewRTPIwLke/M7HcUl9U+wo99AcZ3VVjp+v0CX1aBct2+rXaqu/3tqrztBSHOrsurO/XVOK5h3beu/ozQbzD3PEjftIgEqSgZJ6/wOoVjox5pdlRvvE2DbizW3o8RN/x4BnE8IYLqZx9jO/pVQU5GJzI+UFJN/h4oqruFk1QHtDnbP8SKzd3GZ9i6ma6YI8BwgIkAVeyzmMT/P9z/KY43ksfvzfA6Iqryvcry38RPCMS57FtjqfEsM28RLPUm2OE64zN0m9Mon+XMFr7wi9YUqH0Xf6Aniz8A/ERH6SH4XE9gGVN/5DJbAndK+zt9uq9U6ySeseXiByjgLHmpQrtu30n5MK4rw+hOECkGOi4KRs/3L5X1w2bIq/tTO5HI4IdhFgGNp69nESoH3sTTtfvazji0hhzCn24dlZ4q+VHm4TUjC/owd0/YIIJOyQgUlpUJgmQBLsC+HOOVNIiIcJqLjfyHA6Dn22/h5jknyNBVsqFR5PM9HviFruICkyvfF436GdcJ/TYD8MzwBSrL2lFgS6mZet8cEGI4TIDuEk6DX8zzkFy1Fxm0icm4SkXGTmNxEF43mtRkjwHc6t5PjWw/WdIMTf+DJS1zxEC65VlGRAPiMykhXuiFqTrlub2L7GhPEuSAML0TAZQS9S3DE4pKV4NnDUegYEVEuYopkFGfxmwQYbhKA8gR7Lczkfn/GiowhzLk2ceQ6SADafUKuVpZ+y+joaf49jSsJN3BSTUm4GQKMdwnA/j/l8X9ORIs9OJL/BQGMy/n7Sf4+xNTFIyLC/BUB2pv5M4A5dfHVivjXsHJlD1ul7hG0xSa2UdWEdxOv3PIHrFOWkqM7x7OD9dub2Bjq50QEP5rX9ilW0IiCkkxRT1aK5Pvz+ikxK/15KYnUpAz+3yypDE3qyzUo1+2tb68A8U4g1m+9L8pBTbxpF3YbO8alyocESEjr+ilx0/YTj/a9tJvcqDVorzR7SkSVV/Pvj4noUvSCVBpSKAzjxOCz7F9j/VkeQ32NE1KzcbyklaJv8cvkMbaIyeBDvBafHtkPc4wTeNUSVQvu5PZ/weXZ7+f4vshtNYFsEJFtf47vj9hCFOxnoWRhb/Gd6Emgj6CKBvP8dU0OCSC9RUTSy0RE3Mhxr2B/DCUw5XuhiecmXml8K7+b7WIhVlX0nVUBAnRQGXq7LrOu25vdvgVVyBkQd9AYSs7pEXUfUxd6X/Iu6ZTnc1/pYnvwChi3sXJhgQC+AbzayBNsIzpOAGIflsltEDxzCxv4KCKewqZBj4no9T1CKvZ+cdxneKFTaZWXCJD/BRFdahwnOc5Pc/s7BLhv5Pn0E8AlWeBXBPCWyTUBqI7VJCY5eWWo4EOl3aKEJrLPTZxQW8fJxKsEqFb5ey/3v43VGHtYD76FK/+ULFQRzywB5r/DemuI7/xuvn6ETZQO8xqM5MK7+v/pym2mq6paoeCZ83NRXvs1KNftTW/fSBVyQRQ9hEuoJVFbJiu3CtBWMuwYzhbb1CPsEl6ySd4PMh06wH4Ryx3HPcJJvxEiQjslgKMXP/rfwUb61wgA+YqIgMWXTuWxuvO4M7g8egRXzH2af68TVMQBNi/aJwDtGQHyvQTYzmE53zoBSCd4oVUViswQkeY0lrWN55i2c1yS0vURSpNhYlL5AwGWU1iCpsSdqJKh7KMvr1N3Xncd5y6eXE7xdzuHFyi4hsvRxYFrUhb3v4OVLvLVkE55qwgOevDqKw/LxVjlmVKDct3e9PatqELOMb4HJ8VOaXcMGyLARu5v4pS7cJJN0ai2B1MaKqsWr3yKy7fJY/YSEWMLlwFP42Wc+vKz32KQGcLVeLomSqL1YV+LU6w06SYey9cJYBonouVVzIMO5Htz+btFcNtXCGD7GCf49rFqozuPIf/iOezB0cjr8TE2u98kqIFfZF/vEZNBmfQ7yWsheuJ5jkeFMCcEiKu4ZhBPSL/I/Z5joFc0fyP3XcfFPvJYvor55ifYzOmsYCgnayXzGrSvuajveYOavqjbm96+RVWIIm7JnXY7brQS9FXYcMCLHgnLWC0A7UsMdfooqIrsGLuo9WBFxmMCWA4JRcItAmyeEIBR5fEfEDf8PjYaGsv3buR2ivoGcix/QzzOT+TPZG4n8vMOEWWq0OQQg6w02vv5+kpxPqME4MntrR8nPN/FSUtFyEf5fhfBJa8RkfYtAsD/d/lbTnHPicmpL7eVA5+omAFMbzwgVCvLOa6hHNMCMYn0EFF1Cy9TJX15F3b828trId7+C4ontA7VxVaWY0/nWKSPV6vVF3V7O9vX4JpLbvCMDjnH3Fz9nuL19KQ4UIJQXLOiuQECkD8kElOKtOT8pgh5gIgMn+ff/ViHrKhPpcUrWJN8iH2QtwiQnSKArYlBWRG4qJkeAszexdrkEYKLfZD9H2J+egjTBlt4sdcGIXM7xY540l5v0D7Z7OGS8KvYsnQrxzeUxxe1MZpjkwplnQDF8dy/hQF4Aa+uomNt4gh3GS/j1Ysj4SYuY58lgPQGtirV/4YSkeUk3fb/kr9VnKJy7XWc1O2qQblub2t7La65iHJ6aV8487x+GwT4LOfvs9LtQgO9j5NG0jMP54/Aa4sAl0m8vP0uNhC6QgCRZGKr+fcdAnw+J8DocwJQGrndX4jlmU5w+fFtrMVdI4B2BC+NJVCazvcP8qdBgLb8n/cJcDrI8T8kJpZRAogWsv+PCHB6hiP/Fi4bl6LhGgFam7j0W37Kn+d2N/EyWatYX61odCOv3ZXsU/v3An+PjZLkq/EuwZ0vEU8jSiiK/rmWff8ZR9nLmLo4PCcpPFlVVQM73W3hSaAs7Z+uQblub2v7ulyzvArOK6FVf1JWqMBkqKoqVXTpZpVUagsDm6LoD4kodA0b5ch8aBVX+e0QwHoT20w+J/hJmeU3CZD890R0p2o3FYGoqq+PAORnBEDP5Ht/xKY+KmJpEYnF4zyuqtqaWPs8xotFNI/wunr3iclDpc8C5sE8r7/gVbLFt27kNlI13MKlzpvZjwyMVJm4gKNSyQW13c28rv+GAN9+YhLryTFM53HWCdBeyGPextai+7TnCG7m62dFYvdKfqd6QtI1Oew0LAJWalCu21vZLsM1X0BxvADm5xjli2dWNNzDixVd0gyPEDeyVA1/l/us4qWQlvKzPQIIn+FVsAUSS/m5KuWk031MPO4LZCGAdANTE+JHJ3BV253cZjr3vYqrB5fz2qnkfA/4X3L/r/Jc3sttFrBHhh7/5fcxjJdbkga4whH2OgH+u/n+GJ5ERvJ4cqpbwEqMu9js/hArXRShTuT16cn9BexrWL4nz46/5DW4hXnyLZwc/CCv6SFe5PW0qipdr/ewHG4dqzXOKkI7/n+OalCuW90ubi9QHC+RyL3AM2c0rIiZzr4IcLxL3Kz/AUd3EBKtXqwkWMPqjT4CVE4JwBgjQOkpAZ5/hSVcLVxSvEUA9D3sXifZnvjpJQJs5Kw2SDzyj+TxD3LfVtH/AVZ3/D3WIUumNo+NiqQsmcNywiax6sgplpZ9REw+SortEGA6iIH+hIiiBeJKUi7m2A5y38ncbxFz7n3YV3mmOB/JDqWD3snX4vM3aTdr6scVmHezzxYuohnD0bH6h/alpDRx91RVNVCDct3qdnG7LMUhn4MznrngEssE3zbWK88SEe4d4oZ9jleafpCvt4mbXbIzJfJ2sX/GBhHF/ZLglmcwt9skwPkoX2u/aWxvuUwUkPRjp7MviUd8lSBP45WglaATFSAZ3/X8Oc0+qvx7jwC2BaxeOSaAcZAAVlVG9uQY5fLWj5USu9ghb5+gQnTdlVB9jLnzPuKJYS2Pv4IVFIu4SEY0xQ5WU8wQgL6U53qIF56dyuMqMTec13cn+y4pmCaemPpx4lb76TNN3EPA1RqU61a3jtbxOHkZOd15PHMpcZsmbrxtHCH2YN74FK97J1AYwhHhXQIcTvByTpJ5TRA3ex8BOovZ/0MCnK7lNovEBPEAy+I2MYAqiv9THluR7i0CQDaIR/kbBNj25X7rWN62VfQj7nmaAJxHue8uAfiDHePvyX3kc6Ho81me+wwGcfmFyEtkgKA5mnn99XSwmdvv5fimchybmOLR97WDZYOafMokZxe2EdUEuYEToPtE4o+8Xl/m++KhmzmmYeKJ5pj2Mnb5YAzWoFy3ur3YXrcK8LyIurO8VlVyHxI38wHtUqtTnCScJoAP7PlwRES1vyCi4ocEoH2IDYD6cZQ8kMeUDnYMS+cUOSsyXcHqB7m5nRB8qMbQjZUg49jbQhWFimL7CbCez/f7CFBq5b7LGIiktNjKn7t4yake7BS3nOexjrn0sTz3AwJQ+4HfYGlgL6ZLNEFuYI6+gROS4t8H8nPRFjfzGuwRAH1KgK0opJ4c31y+/gQbT03gFbnXMB/fyPOXpG+gOPY+sFeDct3e+nZOQu9StEVnRF0sgtkJzjIGuos1y6Uvhh6FZ7BmtYnN6q9h2mCLeKQ/wlK4XxAAMoxXbRYor+f2TQIEVfm2g7XAPUT0JlXFe9imUqXYSnZpbJO4DFtVemA53B6Ww01nP5O4XLqbAGSVacu4SUUjxznW93IfJeF28rpNYg55HtMLi3ld9BRyI8ewmu/fx2At46adHMdVgsoRhSOVxxQ2hBrBRSTSlC8QE5V0x7oG/TkOOQJu5jmoKnSe9hVrZoErNSjXrW4XJOped7/ib2laezC43s3PVonH92niRp7GlEIXcWOrDHgbFzLMZV8CE+lwFUGvExHgKX6slwb4GHOaY9mneF0dQ5pqJeyOCMB4jJdnmiSizac4waWI/wQXVJzg8uNhDFKP8xyVSOvNa9GFq+ZuYJtOVQRKqtbM83pSXCdNKlLHKIL9kpDz/ZyIoB8SIDiV75FjkuRujABQJVdFUdwiwPRZ9rGIufNrOeYjYnLS/4Ic+qTjVmWn+PYRoixf/2NHAGlUVJvc161ufL3IuIyo94tl4iVzExepJJ8og3UCTFXWK5OeYQLY9/P1ARH9juM1+Xpyvx3iZp/CN//HtK+CsZvHf0qAUi8h3+rDigtVpw3garkNrCfeJEBpBnOzA4SMrg8rCmYxJdNNANcsAczTGGR7MBjv4yixhwBCRbfDuPRckaWold3st4UXHBC98yUBpO9g037x6VfznK7l+FeISWwf+1mf5vVSld3dPJ85XHnYl9fnbl7/UZyU3c799L2L4lFO4Tq2Nz1XDgfM16Bct7e+fd3IuEP6pvfPCgMALZIqoOzBHssqChGX3I9v7C8JEOklAOhzIpIVSKjkWIoC0QXX8/UwToytEVHmewQY9ROrfNwnZGcN2rXNxwTASxVxN8/nCRF53iWiWXJ8Kss+zp9NAqyG8hqoSEVctvwepJrYIQC8K8/nOa5UbOHluO7kNo+z32HsadxDRPHk9biT5/R/wyoTceYfY19qyQ37sBpD/we383oe5XsC53ECeDdyG0XMB7hYZj4B9ij/N0bzHIfyHDcBigKikTzmFtSRct3q9jrtooj63ESfCk4KYBY3vIfX0hsiHnf3sMdFDwEAO9iI6BoBhldz3+cYlKV1PsRFIVJ0zOOo96PcfzH7nyvG3V2M7RoBSFMYzA6wGgGsNpE3xAYB3CN5DCWwKhyh9hFg2E9MKttYPTGVx5b73E28OsofiaTeHDZHup+fqURc/Lh01FKjtIgVU36T16AHL27aj+VrcwTgK6l4Jfv8C1ayCPyvEhOlqBepL5YoouDi2m5hnbfK8GXQtNi5Tw3KdXtr2jc1vL8oou7wOZAZTVdVVbPEophH+b60qX24Kk4AJA3xMS5EeECA1FjuI86T/H1EgKdAXFWCh8SN3sSP1NJJSz99L/t5givUZObzFK/SId/h63nMJbx8UZmkkvZXYK+IuMJ662kiWj/BDnDiW4+w8kTucQfFe+KwlShcxjTI55jGWSaAs5G/m/nZH3LbJwSwy5homuCLB7FJ0+O87j0YyBXltrD+egVH2ct4CauuNLgfwqXs93HJ9U3s2CfZ5EhVVdutVuukBuW6vU3tdaVul2qFx4GiIXDEqEUxu/Dj9hgGyW28YsUyLlt+iJesV3S2S8iu3iUixBt4HTgVIShK7CYA5ir2ERZ3+x6mQm4T0fQQBr8BrIZ4ntsPEYAkGdkIEQE/wMD7Di6nbmLe+RZOqinqrnAhyx72omjkNdA2k0SEvpf7TuUx3svf14iJZDCPKRpGFXu9eb0eEBNHf/apSeUEF5c0CTBu5r6S5Sl5KI25KAhFvsolfJRj2sCKjGkMys9xOflWvlZxzg5Rnl1bd9btrWqXrdB73SZtqkBRSawuXHUm3vAQm9dIQ7yLI0YlhXoIgLpJJJYaRKJOCacrOOJs4rLfLSLS7SVu+AnCcEdFKX04ghN9MJr9TOX7J1gGJoP4rwiQlLKjpzjuLQI4J3AlnBQY03mOO5jeUEmzrt0mTmDu46h7iADbyRy3Is2xHJ/O/wqW/EmzfR9rt6eICU8GQtIpCzB78cSop5pf53UfIsBYBTYbBC+tJx+Ka3slz+VxcW0PcxsB+BKWQKoCVG5xu9Qm93V7m9q3aHjf2fT4rkh5IHXLm9gtbZMAlgaWhXVja0ipEMZx5do4AcpXsQGPOGJJ3QQMT4nHaiXWRFPMZn+iNqTzXSNA8oMc33uY6pjPfgVCKvZYIgBSfg7XMT86javcDnI8owSYjeT5SOJW4cj9GKs4lNybwxG/wFj0gqLvOVwGLvnadp6vFB9yiZPx0vvYMnMdr3oC9gT5BDvvDWUfd/P7WiMmp2PiCeNJfnfgJOZ6MeYR4v+imduUyWA9LfUQ3+ujzD3Ua/TVrW6v2zq56QT7jYJH7IzIxb2e4jJe3bhT+FFYN+oTDID/ngAqJf32CEAQyMnZTaZHH2FXNlWJreLH+iFiIpDeeYUA1m1cjfceTtYN5LHkbaGquB3M/R5iG1GdlwomlDCTV3EfAaBLuFQbAvzWcTQviaEKTAaz360cs6rsBKrSST/JcfVhmqVBRL3rxGTzLgHMMhsSv60y6IdYXriS/aiakfytEnDlCE7zGNKaT+Ikrr53MMdMvnc7x7eXk3htcl+3un2N1sZNX+SVcY5kbpuIQuW5cI2IvqRbFsXRR0R4koBJ6aCKsO38/Snwt0TU2I2r9HYwkEuBcYILVroIkFNlocB9G4O8AHCBAJGr2AheUjVNIpu4IOYA65UVre7h5aa68j3J/aRbltLiOK+LHvGleBA1pCKToTyGzkGRuqJPAa2A/+Ps8x+wteeD7G+XeMKQt4hKx68SQP5bYgK4RUTQKie/h3l22aruEhPSIPaDLiPkBk7uneZ1I6/NGLBdg3Ld6vb6rTMS7gTpXlJHnMqLcntRGQ0iklSZ8S423pnI7Zt4ReY7+d4DAkAahExsgog6n2KFg6r0rhHANEeA6yr2w5jBQDdIRI6zxCQBNhhaJaLHfQLQ+wnwUrQvVcQIluGJuii3P8DR4ywuYHmS/d/O4ymSlrJCuu9jvNjpHO1R9B+IJKOSmge44GQgr6O47id5LQfzuIq05ep2I8d5I6/dCfCf8WrdUrZozOO530Ju35V/izKSeZL+B0RDXSGojW0M6JvUa/TVrW6v387hpjsr+8ZwEm/+nO23qqoS4OwSS9FvVFU1jqPUMSIq0+NxD17Z4jFx0/dhT4wBony4L4/xJQFQitjuYVBuYPe2TcyhVgSwqBx7lFhA9SFezVrqiUFcFKLikcMcj4o/xAUruSg99FGOSYUXShz2EcDZS0wSU3j9QlE3okjEff8F64TFm0teOFX8/beYy39AgOoaAapyq7uPS9Oni2Pdyt9dedw/0a7H3seywuXi2EfAZvn0VChxBrDj3yaFTLMG5brV7RLtZRrnc2iKXQIwVi7qr9VqHRWJwOMsLpFvxgqRlGoQ0dRDAgC6cPLvcyJSm8Lr7DXzvV8B/5FYDaQX+O8JEBrH3sYqqf6YcJ2bxT7Biu6lj/4ldm4byzGpOKMPrx6txN4Qlrx144i6O89tII8jHw6VUy/ne0d4gpjE+miVLktVcUyAYzeOyhWVzmBj/e3c9t8TQLuNn0IqrGk+zOsqQ6N1zCk3MfAr+j0uzmcSU0CbmKIQDQOcFRItFO+X6zd2U6sv6la3SzdVYo1UVbV0QfHJGU3RarXWyw/OWTJK6oht4mafI4BXpdEP8/e/4kjwGPhHojpNEqsm9stQsYMUHAdEUgsCjKXK2CAokAHaFwwVUKiYYwXbS0o1oWj4lADBiexTfLE8Kaaxr/EhdsqbwWqE5eLYO9gKVP2qWKM3txEVsZT73SKeDo5xJC1pYS8xeZzk70WC4pjCSc5GnqeoHVVDbuW1X8dFMztYIncDW5xu5vEmcOL2ARFx9wGzmQDeLis88WKuZRsCxmpQrlvduFS13y42Ghrigsq+jHjPFkotPpbGdhEnqhRNzeJH4RMCbK5h2dZS7jMF/Cw/O86+VFAigL6PtcpTRJTXwEqJZUwnDBO8tEBxIo+/RICUItxT7EGxm8e5U4xZkkCVao9iqmIG8+VHWLKmxN4nBMiJlxfloAlmGyfLlEAUz97Isa3n+Mfy+A/xUlJKPD7Pa7mV458l5IBPchyqehwgJoKvsBFTI7eZyP1UAr6CdeirWG8+kNdwjnbHvs6kcOf/2S7U9EXd6qb20mq/jgVRX1Z88sqqwY4ouYsAN0nVWliXrPJdUQeDBId6ktsOEAD3EdYId+ePCk1UiTdBgOwRARJbuPKthVc26cfryA1j/wupGDZwUk8ysiXisV8VhIPZ30Ee9xgXaPTna4HrMF4XUNpjJQaVsNzF9qM9BMCO5nG2iIlI0rr+/H1AgL0KSsRjPyX49l/neYoKmSZAVhV/p3ntDwgDpwkiMpbS5TjH2iCeXOYJgD/FT0P6P1FSE4r/D03g2l40WA3KdatbtFdW+5UJu5dEPFIznPHJuS04266oWWXXYC53mLixlwjQUvHBz7AmeIEA5D0CCCUZe5DjH8c0wlMCINfyPZUO9xKAU5ZPD2Fu9CSP1cC632VcrCFQGsrj/SO259Tjv/j1veK1+OxDAjDfy74lk9vI9yVN68KLo0rlMYu1vyrjlg5chRkntBvSy3+6j4haj7OfFuaGF7DfhuiU3xHgPpL9/Albcso7Q5aiX+BEK9g/efOC1dDPncBrUK5b3b5euygiVsXbdCbydPONkDdnVVVlH/LEGM19t7Hh/CIRFc4RdMEYdnFbwbaemwQwPcOgPkVEj5Kp9eOFP6/gJBjYirKJC1nEEYNxosp+GjmOTj71lJgABrGt5T4uNNEEIM2yqAE9BfTl+Z/gaFrKhv08x16skz7Mc5Aee48A1ie4YnAp31smovEGoSgZISbBY0JSpwrKFuFKN158J724AnK0GF8XVrRs5ra6ZltYi3w20XdM7KI+VFhCVVXdNSjXrW7RXkk7dLSLImtFyCoG0DZdhHtYN75ZD4lIa5igG2aJxTcf4qj2Gva3EBBKZyzFAgTwTGAOeRYve/QQc8p6XB/GLm2DeOWNAVyVJg1tWQ0o7e5wHmct+5bLnAomBnNc4mKVGFQkLe52L/c/KT7fzGMqudhDTEqyEX2QY53C6gv5Hj/P67OKLU5b2f/vCUC+mp+vZl/SVf8aP2FItiYts6iJBvF9yrf5SX5nk8REtEp79d6Z8VHq12dz/7K0frpIHtfqi7rVLdsr6YuydUQ8/UTy50mr1ToA5vMGHAD2MzrWY7XAWN6/wzgx9jkBEJK+/SwP95QAFyUZmzgpdpMAnK+yn3exV/DjPNYkAfqSkYmjFaCXwCfg7sEFHCtYJy3ZnAonlByr8viaTHZwkrC76E8R8Uaxjca1hSsFD3CELrpgLLeT4kORsjTO/cXrW9icfiS31X6KXpXckw3qb/O8jvIaPsFm+HtEUnQyz+Ewz3+71Wr9oaqqawSoLwNryRd/hDnueWICvpvn/SXnJ4/r4pG61Q0ub1Z0AZd8E/sTf5m/FXEOJSBLFraf2/5bAmgf4uhyjbhRf0NQFjew7rULR7DrGLwmsbOcCjgaeIkp8I1/SgDMOl6jb7x4X0m/TRzRloUekqhJbnd2+QigkTpCK5kcY18ISeukMOnHZeFHebwWBj2pOQYw992d+yqp2YOXqJLcrx8bG+n8RjGHLi67B4Ph32Hbz11COie9+ARRzi6APcwxLOQY9X1/SUTBmuhU9t0NHObE3YNNjMog4OwpqvZTrlvdXtHOAeHzaI4nZLWXbix800nO1UXcqPsEOKgyroxWpRi4iRNc9wmg+jucSPsSJ8lUhXYt+14gqA2pGvoIwHlIgKQKIcQri8fdwAbzQ9mX+FSR4Ere9WE3OnlYSHcrxzbpmaW4UGLyAK9LKM2wqIcRAkD1pKDIeBxzzNJbN/J9TTIn+OlhrzjWMAbS0TyH4zy/L4kinV4iQpbiYzHHrNLye/l7BPgveZ6rxHc4ltywAFdc8j4B0ic5JlFL89KwZ7GRuPiu/F2rL+pWt1e0ThB+geZotVoHVVXNY4Oecv0+PS5P4ZWRhwkQe4xVDIsE4GzgtfsWCVriKY4+7xCPyeKWDwmt7y4GtwNs1D5EVLLJDnQd85nd2CfiII83jlcBUfmzCidENwh0t3Byaxcnv8oEHzjSBUflAtjD4j0BthKKeqSvsEZa1+YYu+NN4MlAOusv8vWD3O4mLt9ez+vzGUErXCVAWWXeE8U2jRz3VvZ3O78PJWW78HJcp2SRSFVVQ8QEIAWGJrmVwhtFxSdyEdyvqmq0BuW61e3lrQ2E5XlLVGrJcOiF7aA9ysYJonECnMfx47LsKicJIJBa4YC46StsJ9mFLSv/X8RE8A421pc64CquTmvlvieY7hAFoMd+RciiSsCJqN78exjbV2p84pClJ1a1n6rwZB0qJ7gGpkr68vNSCqgS5nEM0JKZiR+WJvg4fyYJEJdm+gFeYPY5NkW6nuf0GyI5pySrDJd+l+c0leMQp9+fn03ltQfrn6fymmtS0/euCsyz/5FC5z5GeqO0Wq357E+LrNYVfXWr28vaBVzzNLnUEwEQF2mYlX2HoBWOCdBdJ6KxZ9mXeFtxkl9l/xsE4D7JPsbxop/X8nifEwB7kwBFFXgMECC0TICVyr7llywwPs0xyebyCgbKRexNIZMkJdLUVzfW+orbpThvcjwP85zF6W5iDfRR/iiCnyz+FrUyiROJKioZwNH7AS4N3yESm+KgT/LaKiHZl9dDTwPyrAArI67kd7NIAP0xAfaK0qWhJs9BnhhK5oIVHJq4Bcj7eYw12ltd0Ve3un3NttLxu7OpOEQ87VoaEK3k303ixr6JV6dYJQB4mIikxwhgWcVubLcxyPYTwC1/5RZeE26aACl5XCgylhRvFlf29WHTHiXblAgbzH0rAuClez7GSx3JpEfSOUXX0iSL15WnhaJSUSmDmPbYwDy0qBhF58O5/wrm50exCdFRjm0ec8oDRLSrazZMACu532/w+oDivuewTlnJy+t5nf6S1+kalu7tYL22qjRLBc95r/V99gEHnX7cNSjXrW6v2fJxdP6VG8bNO4slULME//gIg2MJiAd4xYvr+dkJASrXichyIPfbxGvgnWKOs8LLRMk6c5EAeoG5Irgh7IOhfkayb6kFhBFSc+xhe09Fxzu4gGKa9uh5J/tUsu+oOI7454Oi/xFcYTiKPYoPichylYhctd1yXi9J/ybzmknR8R5eVVs6432CMhrEq4dLRSH1yna+N5j7NzrGu0EAvLhtPRVtc86CB/DCqudlUYl8PEaqqlrqom51q9trt6qququqGq2qqreqqvH8UTn1NgHanxI37np+tkuAlBI/EKAikJQyoJtIJu0Tka58IYYJcJE2t8LcbT8B+DMEaPwrrpi7hRdhVYJuBZsLneIy7DI5t4ajzkOcbNsiwLEf0xqTxGQxmn0u5vgF0PKzAK82MoipEem6xQWLx5Y64TkGwOnsbyP7mMGAWRGKin0i2ScqZjvP7T4u+xaHvlRcA4FlP0G5nGBO/AYu5tnM69mV4CvpIkXf57b0uRDVNYr55x7q4pG61e1rN0U3iiiVpNrq4JdLVcY2AQDa/xSXVO8QYPvXmFveIMDwJva2aGJfihXi0fsWXml6jgCXSRwxL+IilVsEvy2pmzwjBrAMbBgbuq/gIpJhbPepoo9THP0qCpd0r4XBaTf3Fz2hQhR91odXfu7B1YVSgKiEeyjHPZPbtrDHhaLU7rwOo9iXuQ/L26QGGc4+t3LsVwhgvUtQRf3Z13NC4bKD7UM1kezQ/tQkbvkyRUilskdJwLp4pG51+5pN1VgCoU4usdxOv8eIm71J3MgP8GO7ZGTSFTeJG36QoC6mCI+GZRyFPsLVgYP40VwGOd14xef97Oc0j6EiDzm4zRCAo6hQag1RFUs5/gnsodFFgGKFwU/GQuPFZ+S1ktTtoHhfXO4EBk/piMUL7+bxDvHK2tJBN/LcVcH3LPdtEMBcEYlTSQZ3i2MdYEldFwG+svrsynMeJKJryf7ATzUNnFc4A9giChZXLMlbp3nV2f9GOZHXoFy3un2N1mnleYEHc6cqQ+XLiuqUFNvBxj4Hub3e2yMeo0Uh9GBjnlFC2tXCIKHjiWqYIh73pTyQjG2EAMAtHKk3CVC+hiNg8vUcLtIojYUELFJbqFJQxSLyyZDPMATAbeXxpNhQYk/XYyzfE/0g2Zlc3/qJCW64eH+UoBjWsg8VoryPDe8X8AKt3QTozhET3lfEk8ou5q4H8ZODJk8B9C7BAysy7gJ6clkvRe1juKKybYGEi6pIa1CuW90uaK+KdF5han9ePyu4XFmALC5xhgCSLQIgpL29i7nKOQLwpH0eISwzGwRw99BewTZLgIIi4jJK3cMrgwisu3FycZMAJmmDFZVOYKe2Q7zckzhjPfIL9FSVJ75aig8d9zE2q69wxZ748q7cH5zwW8rro+h8Gas89vLaLBPfm2gjabHH8vr/59zuA2ISAuuQD/LcR4inCwG5koj6PsvE5FfZx50cwzOKEurcTk8wL6w6UiowalCuW90ubmWko6T4hVrkBGhFjNtFHyq1VnWXyoR1w94lAGGVAJlbmBIZyH0lgZNXxBZO/g1j+095Y+wSQN2NwXoGR4/SGGt8kqp1YU9hjW+fAENxtCXtIZc3Ob5JaSFZm0AMDKqKoIfynFQSLW8MbduLdcw6nvwtxjB/q/7msfm/ilNUyKLxdBG88hLBEx9g8P49XuH7OQHQQ5jrnsWSO8kBJR8cwdLALWx0L6WJcg4XtTP6owblutXt4qZH87NIufhMN9E27UsW3c3X89jQXiW28l/QI7MARY/vckbbxOqKTSL6WiCAV8k1URPbBPiqCEXaWsnJBNgb2ZcUBJJ2HeXY9gnwkv3mIHZvk4RLICevB0Xfks71YdWEXOjGsXezuGAlN8V3X8txCJAl99PkIHpCFX63saey5HCN/PwO7fzvfH6+gcvPPyAi4Ns5hkHiCeBXWPfchymPZWJCk5veWO6zgHl/Of09o/2J6ozWKP4GXqj4POOXa1Cu2xvbLrHu3ktbB+d3JBkcHTcRVmIM0r58vLa5QgBokwCHfgKoVokbfQlLtpawAc87hBWnJgBJyrYJ3lTm8nqElj/DCF4SaiI/e4Qj77487nKO+Si3OSKiQWl6d/HCpceY8xVtsImr7wSyksHpCUKJO1XWiacWLaES8KGi73GcMDzBFXiKuvswDSLvjnVsiK/JokxSPsjxbuR5T+W5P8JFK6p0/DOOzmX+1EVQFE9wSbmu535e6z0iwj6js4poeSrP+7wKPyUH60Rf3d741mkm9E2bKvUWW63WBi4EKIsK5vFjNUSEOIYXEN0mwGCJiOAUlUmWNoWjaOmRTzCYKmo8zn4+wNHwZr4ny8gqx9ZHAM5zAszIcRxgf2NRErsY8E4xKMobQ9RE6YXcne+JNxbFIKCX9rk/+5ESQ8k7lYdLu7xBuz9Gg4hAVSQDdroTFSOuXlH8UP5sYIqmD/glNjDaxGsgtvDE9ycs31NOQcnQQyJCHsF8tSSPUoi0UV15fovFazpet6l2alCu25vczv2n/5abih/EIfcRPKkKRfaIm1++DjMEwKjsWYUX+0QU9kvgFwTQLOTvZvYzgVfE/hAnAFWccTWPWRV9yvVsknhcP8F2mdLcNjBQntJean2MS7GlPFC1nDTOfTgyldyuN98TB60JqcIStC4cqY7ghJ9kaTL2EW/dS1AdAnE9Hahk+Q4BqCrjFgUzhY3+f5Xn9EVevyY2YZKfRTkZdGEHv/G83rsETVURkfRS8b6i57P/uXzi2gDIYqNZbFRUqy/q9va0yxrXv0aTd0RntFNWxr6HK8qeEjfzU1zi+w42tJdB0TQBzr8mQPl9XPUnrlgR7BQBGDsEiIzh5ZfGMZ8qrlfJLQig2saKDyXWdnCBhhJukqIN5H5yoTvB6pE5HCELkFWUsos5YFE2KphRFC91hia1ntz/KtYxi/M9zP3LRNsMrkTUOFXEchPTGQJYyfQeEBPgPvaufpLjWc9+pckWvTKNJ141OeRNA0vpb9LNy9s0HWZWna0G5brV7RLtIn66WAj1CvEo/BkBtId41WjJpyRzk7JCj79fEpHvImEROU+ARA/w32PwWyQAZQMv79RDRNQPCT64B0fWgwTglaCqYgkVqUhKBgZk+VTsFq+7MI0i3OjPfo6Kz0WF7OGkZAMXtQjENWGKfjjAKoe+/C3lwgntK5WIO1/K/UextrsXSweX81pOEQnOU8wr72MKZo4Ayp7sS5G+JIrv5TbzxASrEnVRJKounMeUWZf0yx35jFeZWdWgXLe3p10ErJdMCL7AT+d+8n7oAk5brdZ6VVVN4vFWSotlAnhEJ+zikmhpa/uJpJ7A7THWLk8Wx32MAUZR8efY06KXiB7FF0uPvIrtK5VsEj8NjjTXsanQKHaFUxQrlYVKpKWSkMa5wsCrqBWs5OjDJdhKECrRJ/5ZXh7qV6XT8uOYxBSDFB0H+T2MEdTEU8wnN4jJbz37VlJQTxAqWZ/GWmbx/ZL6PSdoJ9Ebx8X+ixhk9eQ0ltdjHtjo0LxL27593v9bDcp1e5vaRYm/lyYEi2ReZyn1EAGu0rbupzpDvOtebjdBgKLKrEdy+1m8DNJDgi+dwQuC3sT+waoCnMKcsBJfdwllgDS3t7GeWaCrSFRj3cI+FuJ9ZRC0h5OESvb1F8cstcrg6FitG+ujNXlIY3xEO3UhVcYI9pUuJ40TXAH4APPbkhjuYl+PbfzU8JjQI89imeA68URyCz+djBG89h5WmAzhJ4bPsk9Nchv4f6CR39cjYKCqqtNCbTGMV/SGds27kq2n1Jxy3d7ydlHi76zyqlhjr2yl6qLTu2ARR0XTxfvHRAR7E0des9inV0qFaQKkFgk6YZaIusSPrmPZmaRhqgA8JCKxLsIbuNT6Kkk3RICDfCe28/cWfuwWPaGoVoZHmhCU0JMiQrK/w+IYKo5Q9ChfDKkwpBzZw4m9vuI4KkSR4kRUy2b2L9rg3TyfxzhiHyImF9FB72PZ2tN8rah7Ba9WLS/nkbwW47jyUhWLm1gHvU5wxyc5UYsemsIKE2mnF7EGmeK3ysFXefH/EKhBuW5vUTsv8Vc8VoIrry5KDnZJpywNKvFoKj+KVfxYrEq7JlGosE5QF88Ivlh6YEW/TYInfgcvcKpH+EUCUGTQfg9HYQ/z2DO4nLgHS+9U0TaCizKOiElGYAyOEKUl1thLiZ0AVFGxQBzME3fjkutygtjF5v7gKruN4lqNYR/mo+JcVMH3MPcVSOq7Wspzk1JFgP8Eez7PEN/BfyKu/SxeJHUI88fjeMKRRPFJjmGpmJSH8hyf5+d9tC8ZVtJCR4WX8tUc39ZFVFkNynV721tnZd6ZoUxx00h1Ia4Q2nllJfQmCEcxctshvBbfEVHWu0YAglQcv8QeC6omW8MLd17DXhEzxD17BSekJLc6ze1/RoDofo57lACGslxZ8japI1SmrITdMJaSiVcVeEuGNoRpi3XMSQ/le/pc+xzluERpyNBIlYclb93M4/YWfVwlgFLcuKJwRd/P8Bp9J9ji9CrtChQB+HGOYyO/AyVSZYgkvfFhfjdjwHRVVZu0Fw8dkguiXuQAR3urE311q9srWqekTY/0ZxFzYTwk6VYnr6xE0xHtPgddxA3+MQEaKjIQKJL7TeR2AsmpYn+Z9EwT3PEu5lyl1QVLxPR4LF2tuO0BAhQVHe/i8u9BrJwQfy7eWBOKHtWVHNzDlEZv0YcAtxtXBJ5gqZwi7j7s67GBo1QZCi3hZatW85rp6ULFIXtYuraIJ4tjggfuwxajcsEbJTj3h/l3X7HtEDZiKqPlQ1zOfRUXnOzmmK4Dw1VVPXiVA9zLVq3RU1sNynV7q1uRmFG0fF7lFbhIZBPOVoxQxCRgEdi8RygATgmgOSUi2Nn8/Eu8zpsSfdIUj+MikH0Mels40TSKpW8DBGArOSgqZiK3Xc9+ZzAfrMKQslhkDIOsQEi65TEM0krECYRPsi9xyDKCl9JCqgnRKAf5/iCmKiqs3JAyQ/7Oqvo7zOuh4x4W45Eh0EJe536Cc17O67ZBAPinhOLlWvahIhYVhyxjWmWv2G4sP1PUrmsMEfGqAnKEcxzgXqMNUa9mXbe6AS+ajbe1DvXFPl7VYr7Vam1UVbWN19q7TiSaNnGS7i4BtFMESMjTYgP4H4lk1Fwe7iCP9R6mH0bwI/0NQjXwjKBKfknQGU1smSmJ3jDtK2Gs5XsN7Pgmba+iY2ivxNN2ojDkxSwAVZGJNMdSXgisj7B6ZLDoS+C/gFUkksdNEdGqnj40KSkC389r25W/RXm8k9d+NV/3YTpIuu8jXMV4PcdwH0f+mmCUPNwgFBj7+bfK2RVBT+fx5G1x1r6G98ou1PRF3ep2mcq/MkqWDK6UgJWVfjsEUAhgxK++n8dQOfVHWB0wCvwNAdxPss9xbHA0nn09zH22cr9urGGW3vmEiPxm8vUMlpRtYhXHEQHeUkUoKlcELQDex0ms0WIbcbICSk1cYJpCvhhXMGhLVreW7y0QEekANp8/KvZXBaDkfEOYClHhy3ZeuxYBmpoMp4mIWZpr8fRNYnI7JBJ1D7AyppHnsJ4/G7n9DEF7HLdarVXCoOpqHncRe56U7aVSy86m/8MalOv21reXRTTnRMmz+XuD9rLbHiLaXQL+iQCdu8TNfErc+KpC68eyqw9xtd0SsYz9M8L/Yjf7kOZ1G5u6P8UUiPS9KsBoEJOD+GeBwxXsfazjN3Kfp3luinZlwXmIXc0OMFAqMUfxW6qLYcwll34ZGifZv/jeUaxjXsAJPJkCycWu5KeVPBS9I/rlEbFIgLTG6ziK/QqvuD1OAKm+0yksYVP0rwnzCi4cWS9kk3ryWGm1WnLwK9tFyb6XthqU61a3i6v1hrDiQhInPTIv5Xbid39ORNNfEcAgbXFP/v2QeMy9m/3cJ8Dkfbw68zIBgvewHechLm8GF218REwM8nC4i32QpRzYJYBHkW2TmCT6i37kmyGFh6rqxCMLoMVDi89V9KpxgU3tjzGXvFP00Y01y6JLtnDkPp/bT+Hlq1Sxt00A6hQxoSzneK7i0ukjgmoor1MTJ+XGCSBdxNWOJa8uDv6AoDaauMhFkrkRoK+qqhWsf9bTRlv7ut4rNSjX7a1qF0TF50U0KhhRpl33SrPYTtyyKsYEbh9iOdwWcaM38u9RXOEn3lVZ/xbBJe8T4KFijX0CpFSdpklCsrMnuf8I9jxW0vEAg+skVlBcwXyzaAbx4ErEKeklkFeEKmqjD3stV1h6V6pCpNvuK463SUwOB7iEeg8b7vdhKuYYUyi6bk/xitoqXHlARNmP87hX83qrSu9uHm+TmFCv4gVQ13AhjEreJc/7PLfdz+s+l8eZLs5fJeffSqtBuW5vWzuLirW+HgHQ50U0Svgs0bFGX2qZ5ecrN7KHWA3xHl4GSTyzbnQVmUjDvI+LGGby92Miip7FRj0jBChsF30NY9CbwmCsysEtnEQTYPYRwKNoVWDbwstF6b0+LN/TJLJLu6OaImMpO6SqUD/inyUdlL+Htheo3yOAeQlHzOKpNUFogno3r+My1h5P57H/hD2m7wP/h/yujomnlmt4ZZhlXOUoemU9jynliUqwZUfaS0wM09gHWxTPN15coQblur1trYyKz8qneVHKtJ3v9QADF4C2Ir9JXBU2iBOBG3g9PtEfehSuCMCVDOu97Eea5RWcQFTUOoW5WYFsLwFwDawskK5ZMjlxwQLMXbyEk6gMydtUMCGPYiX+ZFOpkmhNDAKjLbzkk5QVvTjhKRqii4hM5TY3if2SRYkc0A6APQQAr+Y27+PVW3ReKrLpIQBT1MG7+EnhE4IbVkJxn0j47eb1Hs4+buBoXPrkbbyaipQaS7SXUqu9VoKvs9WgXLe3qpU8X1puXrhdVVUX3XQQN+kz4sYewfzzJF5+6SEBvO8TgLpGgNgalqIJ9CqsxhjvONYzArRHCDB5XuyziaPbCQJYZOYzjUune7DOVom3kg+W94U4UlXmHeAJDOz+poKREqiVJASDcwsbC8nXQkqSadptQwV+vbhCULz6PgGcH+XxP89xvU87jSJu9xGmeUSNvENoxCXRmyIm0BEC8JXAHCBK11X+/WX+P4jX7gKGyiWcOtrXSvCp1aBct7e5KRLdLz0tzlnQ8mzNNe1YVPmJD97G0q5+7OV7QtzgEwQX+VsCuBcJwJ7EyTPxu1PEKhpKiF3FgCN1QA82QlJBibTJikqVrFN0LfqiC9MIBwTwDeWxBeCl2kHUhHhiJdFaxXsqNNFkIe5ZaouD4vOevFYqlRaNsp7nJ9meqKM1TIGorPwTwitEpdiKfE8I6ZqoIGmopRGfxfK8VcIwSnTOwxyrkqVb+T0KXAdwReOFgPtNF1eoQblub20rTGJGySWRiuh4rNj0ZcqMyfy8SYDBJE5WiZtUpNdLRIdlBCsVwDZRjTZGJKXkmiZfiC68NtwUce82sI5ZyTpV5enR/wCrJsQNC/Q6q+MExt3FNlJBqF8pKVRooYi4rBLsxjruY1wFOEA8IWhfRd+akASwog40mZT0zD7xpHCSv0U5DOES+O48lsx/PiN45kXs6qeKw99iLfdp9vFVjmtbk3T+j+yTid6LuOJvyidDDcp1e0tbVVUCyBX8eC4lxC5OQp09ip4jkzslwOMOfpwWcEwCf0dEWtNEJDtGPFYfEdHeO0Sk1k0A/ioBZl/ktsrsS2ercU3glTNEn8gRTkk0ybxUFSfJm4pZFOXuY6+O7uybYt8+TCMoctcjPkU/h7TTGKdYeSF+GWx2r0q/U8zRilK5UnwP27h8Wyt7iIvuITTJI8SEKG55nZjAujG3/i8EDTSFJwaNbT6PqXZKO6hqktZ5ndvy/2MW4+q50fKrgLsG5br9pNs3iEymybXSWq3WfMkfd/hhqFKvE4yVwOomgF1622MCVGUgP0BEfgI18ai3sdxMNMENAlDEg5bgO4aXddI5D+PVQURDyLZyH6+aIU+MMmEn8B7Aki7hgc5P1IMqAjur9hRllxagkuopUt7GGuxZXF13RNA+qgZUtC6apR9L1cTjHhfH/DOmY0Tt7OTx1nChyN/l+c8Q0kF9n5IQjhHfnyryzqSQ+T+g81Ki76LEMFiieKFM7jLAXYNy3X7q7etmulWNtQbn8oDnqTSkWRb4ChQWiJt8F4OEAK/CUV2VfV3L97axY5zKfMWjirKYIEDgFBvh7OZ4GngR0SXskyFVhSYOmf9Iqib6QZGigEpl3WqKrMHqEiXrSgqiLL1WAYqeNCRlG8d89SbxVLCG6ReVfEs61+zofwMveyXXuhPszKfJaoKY2Gbzsz8QMsLHud2dPJYq9K5mXw+K9RZ1vkr0KUp/VdP/ygsyuaIp0r+Ql65BuW4/9fZ1M90qUHihGqsz+u5QaYhC6Mn9mgTAKJIexfaOT4jKMEnanhAR2yQxAfyJuImvEgCj4pAWAdjSJZ/iCFi+EKqYU6mxKvX0t85JhRAqxhB9UIKmJow92j2PuzFnLJ5YVIbAW2oMbSfaApzckx67LD6RPruv+F0CLpiaka/HJDH53AD+Pvt5mtvtEZOUimeGMX2iUukHxESgyUpa8Y38/rawt0gzx7BKO4C+kBhGF+LVih2K9y98sqtBuW4/6fYNMt0vgHkBxj0EyOkxVdynNMcCDQGTqsOOCFqijyhaEDDqRu8jgHeu+GyfAPB7GLBmiGhvD1MXfbjwQ/wsmAcXDbKVr4eKz6RN3ifoEyXfSuMhaKc4RKmAKQUdV94QUnyoAOUkx7eNy8OH8njHxXaiYjYIkBWlIp5afh2jmFMeB/4Rl5ZDRMUyFvqquD7aXoUtxwQYy5FOlX7jeLXxUmGh7xngsEOjrsTwuU9nr/p/vMz/aw3KdXtj28v45oxq9oHZqqpW0ny8pEL6gHtVVT2hvXjgDl68dI0Ahiu53zoBokpiXSc8MaQeeB9Hls8JYL5KmA+NYtpjmNDjgn0mRrGMTRSJdMtyeFNELZDTdnqMlk55APPDinwVGYPLmwew6kJPB6ItWsWPImIl+sptjrGZkhQl4FWmRQEpISfJmTTYe0RytJXXeZygHp5ha1MV1uj1KWHsNJ59PiPohwHsdke+Pwh8fk7J/X6xfWf7RjrkV7UalOv2JreXVexBkezLx84uLKuaxgD8iLhX7hDAtkWAxs08hvwT5PZ2F5fgrmAHsrHs/zHx2H1E+GRcw5HuYR5rMN/fxitOK+I9xsAijlhVcCfExDBEgKzUE43cXmBZljfrKUAUhfTD2k6JQWmQFdFKjaDJ5DjP6ypehmott1VhivocoF1HLUDewhOCCksa+R1UmDdfzWtxA0fD4rJH8UokktCdEpOklB592MzoelVVj1qt1lFHJHseJ3ypaPebSONqUK7b29xWcLnxGNa6DhBJJUWATeJR+Oe5zf+IFQRlZdsOAQrvAP9AVI9143XilvPnSnGsHWxo1MBLTvURj9t6nK6KY5zmmPReWSYtQFcEKspAGmaVUkvJIUqiVXzW6tiO4m+B9mnx9yBOcCnZJ230YB5bkfImTpTqHAZo10zvF9uO5XXYIqiOd7GMbhA79i1nf7dyn3fyevYA/zNeBFbj3C6ueS/nJPMuA6wv2eZrl1p3vXqTutXtp9fyZoGImHarqhot3gPO1ks7xiZAm/nRGHEzP8PqBN38zwmQlSnNbwkwkYLgWW4rV7ZVDNbruPjjZ8SqIT3EGn6K5JUo7M59dfzSFlPR5SIBNocE4Ixl/3JrE0AKkEs5WwurLQTEJdiqgo7i89PiByxDk92l5HGnOEpVAk+mTRDUwp+wFWZ38SM52QPMN6tMfZCYSB/mvie5zUbu84zglqV8mct9P8hxrGFuXdf289xvhRebgHXonM9etY1kd69NcdSRct3e1DaEVwvRozK8GLXoZlxptVpHhal9AxcvdBEJPBnRb+Ol53sIUPjbfP0e8EdsKH81+5cD2THxKN5PTAYL+bOGnd4kP2sSFInMjKR1FoBJ6taPy5VFg0C7wxtYCywK4bT4u6f4G9qTiQJs6YW7cMJxD6+DJzP+Hmw6NItlcgJcJfXeyXPbwMUeQ3kNDgjwXSj2lRKliSsnj3ER0H4eD7z46STm8tdz/0VMkfS0Wq2L5G6y6+wpjO3PWscCCG3g+01KrWtQrtub2s5LxrwQtVywuvAMwQuvElHUMQGOvcTNrwq6DwnAuEmAbw9xg0pC9j4BZIP53ucEL90k+OIRAvwVaUvC1UMAjUBQmmMBnnjTbgzA4lPBYFLyxSfFtgJivSepWllOLd1yeYwSyMsqv0k84Uj9oKIMabUl35MmW97T67ia8YRQofQRNMQmMYFp1WqBb0+e/0aObyqPr2rEx7nfX4inmZE8xnZ+vl287kkb1u3ClrWs3JRW+ZgXQfZs4v+6JdXntRqU6/ZGtnMilbPXxU13SABKM3/vYuWAVAITtLebOKkmSdYdIjL+3whusyvf3yheTxFAX+FCh8nsc7bobwJX4pWVcvBiGbPUFAI70TPijvdyrCrTFviW2whElSwry7VLeZwoFNEN4quVIFSULu74oDiWfDoUJe9iSqOfiIClp9a1ldOd/t4nQHoeW4M+xitOl74YEJPkJwSvr2TvAu00wykurz4l5G5lxd0mF69uXr73raowalCu2xvdLkjEiAcUD6tqOpUTP87fV4nobI2ImIeIKJr8+30sm5LSYRl7+K5mP/14xY9pXIF2SERh9/P1e9lfC/v+Xse+xYpMTzGdIH201BYCCFXDyfQHzC8LbBXZSjpXKixUYq1jKSEn6uMQc9bSPUt73Y151r7is37MNW/ntVQkvocnw8cEUM9gF7xPCb64iR3fjjF9NA/8HuunpwnAnc4xKTKWc5zaMq5ohPaKu+0yAi7+l87kchf4bH+jVoNy3d70dl4WXDfgCu362NvYZF77im8dz22U+a8I4BAXK/74s/xM5dEf5/EnsLpgBhdW7OPVniXr0oShn7IqTxVvLQKwVDChZJ6i1pI3BntZCHxV9aZIWKCubXVepU5Z10POc/LVOMHG+aWUTjTHUXGc7ryWLWLSggDVZdq9RkQpid7Yxv4bc0TU+xkv0i7TBGWxgcvWVf48g/1ENvOzzQ5gfVnFnf6XRvATzAugXK88Ure6vby98IjZYXQv2dU8ARK3iBtf1WBPCMriGgFGi8R982u8zNIu8J8IMJBOd4cAhY8wkHUTUXeDAOcFHIHewBHqKMGtlvyt6IbDPA1V06kdYiMfVetpn+5iW0nVoD1CLWkR7XtMu+HQMV46iTy/CgPfADFB7GAq6Kj4XXLhe/mj6rs72IpzsuhTfPxvCI5YSoth4kllhJhcTwnAncRGRvq+1vK4qi5UpHymjkgg1VPFyyJkeHlhCdQrj9StbtHOi1AukQWXl4UUBZKvLWDXsQ3iBl8hbvB/ICiPEQLMxwmlwD7w1wSgbwC/Ih61T4ofgdEKARzTmBJR8u0YJ5qUlFLBhThgaZn1qC3wVQGJaAfpsBUxS8kh2mAQO8oJlBUpK8EoekOGSpooDovxiGI5od0r4xBHuOKGxSeP5HsbeBXtPlwGvYN9mMX//z77G8Crfn9ORNTjBL2hwpVtbJC/leciU6UhYKGD0mrjl3ETyJ5dn1fQFt+Ia65BuW4/6daxSsilIpSOfcArT0PctD0EmPbhpZO+yvd/josN1nHk1cSG63cIYGhkn08xQJXFHk/xaszTBFDtYpMkOciVFEI3Nh4q/SlUuScaQxI8RbxlhNxpKiRTorLApARZsIRMST/pqjexRG+BAMnZop8B7DOxTADlfP4M5+fr+fow32/mtgPEk8sONhJ6P/tbz23Wcp+evJa9eS37sfRNSbsm9v/Q9iWldVFST393cYn/r3rlkbq97a0E4pdGKB1SJz2qdhGAofJbiOTabbwclG7uK0TRxwGR1VdBg/jLXxNArIjtOaFrFmDK9U3OcJPFWCZzm17a19IbLPY/xBGzImKBdckfKwnXW/QjcNX2YJVFqUkW8Ku18DJL3VgRoQlrC5vQi0eWukIufIqIBwkgPSC+hwcEBs0R32E/QVEsEROC/KJ7CBDuJ0D6OK/zAn6q2CaAdyKP84h4GpnEOmKVh19EaZ1Xil+uUCPzonO9kr+tVoNy3b7z9m0skfOS1pmYeVmEUvpPbBI31xy2hpzGUa842us4yh3P/ZZxOfT7+flYfr5EgPgE1tNew4ZCMgyawlyv1AjiRZVIUxl1N6YhJDVTBC31hCJi8j2BpmgMitdVx2ed25Ql1ipO0WtF8sPFNjJKUvQpTldcteiRY2Kym8Hr9X2KgVuJQ1VYHhOFONIJD+X13SP4f+nCZzAFNIEj+UlChvgg91eS7kxdkfuUK9GoiOe8/1Vx61K8fCetBuW6fR/tGyU+XtbOA+JzdMhygWsD8LRgHCUiKykRrhI3vjhVlV9rJQwleaZwgukKVkYowfdO7vMUVwfuZx8qdlCUOYej3h6czBOdIP5YYNqZvAODeBkxl2oK9V36W1Ccj7heKTg0GciyU7rhkkY5xtTFUwyIkqkpqpTj2z5OUPbk9v0E/TCS120utzsmpHHSHb9LTIZyjSuj4y4iGStFyAGuKFTOoEzSnUdfTBPfvSZoePF/9Tt1h1OrQblu30f7Xv6Zi9apQwaYLx5DtRCmHvNVqttFAKySTNsE2Ki4YxRHjYfYJ1kVaiqRllROFIK45m3MEytyFkCpqKTkeRWRSRkheZmKPHT/ioYQCAt0BZqdvhYCdZkVlQlBUSEqt1a0qPJt6bHl7KZoXefeS4CrfCrU7wlBQaifXaw+aRKJUnHKg3jlkTlskj9ISAw1ZhWpiI/ewOZGNwnw3sa+zPLzWOJFI3qV259FynS0b8oVX7bVoFy377x9V//M59EiHX4E4hQ7zWaGsFm9ElpDGDyb+dkm5i8FhHNExLZBRMO3aDd1VxR8QADEday8mMIm8wIyRbUCmT3aq+bE40oloei5VFP04Mi3pCP2MA0gLbOAFdoBswR27a9iFUXZ0K6wkMxP2mlRM/q8lwBe8cVzRKHMBkE/HBFSwB28qEB//v05Ebn2EeA6m321COD867zue3gSHcdJyz4cPeuJR+1V5fYHnZ9/n60G5br9KNsleejzaJHSj+CA89dWUzGB5FefE+AwiyVeohAOieo68Ym38UKdBwRALxAAMkOA0ygRFU7jR2gB6hARfSsJpgIQqTDI46hKcAv7X0jHXNIWAlgBqzTESmwJHLUNtPPHksuJ1lA0KUAW96oiFU0AG0UfAsWKuN4yWxrPMeizIwKMZV+6SvuadneIiVA88QQRQQ8QQFzqobUqiybcibxWKo2WfPAUSxkbxPfwndFp30arQbluP9Z2mRtHEc/Zmmlcgiop1lITCB0TN62SWdcJUL2Go7FeArT38/V7BGCv51hv5TGluW3ixJ78jJX8U3TZwGXNmgjKxJmq5ERZlBHxIa70Oyl+C3hV9ackYKcZEcX5iiIpuWhtJ8CGdqpDk4wSk+QYJ3Lsqzm+PQIoN/P1BvYTqYgJTLyvEpw9BCjfzG2X89jPiYmulOk1sENcC3jWarU2clKfK46lSsay6OP7otNeq3W9epO61e0Habu8wo+21WqdpIh/iIhUR4r3qKpqPH+6z9uXiHDnCfC/iyPHKZylnyE0ypPYq1hgtE5EY78kAPyUiLqbmNPuxauFrNOuslASbSd/SsWCwFQyLKkpSnpCP13Fa3Cirkz6gblriv5LBcdB8Zl43yU8wQjYRI08I4BymXaTfUWoTwjA1DlPEjpvydpU3PEA+J8IaqOPoIX2iEKRpTzeJ0TUPJ99Pcoxib/fyM/PFBWYH1dE/dL/px9LqyPluv0o27fAQ79QoZWyp7l8byHf13ZXiZv2/4tXvfh3RHT8f8UStkVc4bZNAI0e0xUV7+MVLTYIUHmMF0cteVpxtCvYKF+RoDhuJe0UOUuOpnMTH62/ZRSkpsSe+i3VF6oGVNRcRuM9eGLR/kpeThKguIE9OraxhK6bmOh28dqFqiBcK8bwBEfTx1hC+BCXuIuLX8VPN8/y9Qd5PCUdh6qqUiGRfDk2kzM+6nCBg5q+qFvdon0T7fJ5bl0EWHalN678hFdJMMt9bhO0Qx/wLwSIjOdv8ZAtvJwQBAC9Q0TM29j3d5cAjAYB8AI2gZUiVHGm72OqQMAlKmMr+2ngdenK4g9RHN2Yg1ZCrbvYXlEwmM4Q0OozRdrirBVV92Kds87vlPYJQIlCOb5dxS544ow1wcht7ZQA4sW8NlXuo+uwjZOjw3ntB4jFZOcJAJ/GlXqiKsDFI/t5nLHsYx5XDnZB/M/k/1npAlf6XnxXOvrXbjUo1+2Hal8r2dIR6UhatoWTQ2qzwINWq/Ws2EeaXy1ddIW4aQXI7xDgOUdEa30EdaFSa4H1cyLqnSVubCXuZgmgbub5KeM/iiPYNVz9NoYTfmDOVrKzTh5Yyghw4kpN20rydtrxmfoQpaGxnWCfY/HKR8W4VCQhzbLATPQHRCQsgJXkbTn3VVm4NMZzRJSrakZ5Kj/Bi6VO5DGuZd9Pi3MTLzxKXOfN7KuBKyLPKvQy1zCG/Sw6i43gR5b4q0G5bj9Uu3Sy5Rx/C0U6+3j5H0W74Ef83aQsbmN1wVMCBG4TN/IaXklEBkM9BPfZRwD3IwI0PiQAVZrbqfy71OaOZz8yXRfHOUCAhzS1Q9h+U8UZAt1SJ6x7VBSCHvvHMQArilZBB7R7XoA5Z0WVAjBxrir3loRstNhWBSUqHgGv76doX9flAPt+SM89QDyhiENuYivNHuLp47cEYL+DneUOMA/fk9df5fEa8y52x2sS31PJKyuJ2FVEyz9IUchlWw3KdftB2mtyxi/zt1AkC2m5mCAuJ7K7hNxtnSg8mCbUFQ0CPEbxcvNTBCgfA38mvCyGiOj3OZZwiTIRDyq+udTwgtUFI9hjQom10ne4HK945q7iR9uV9IQiab13fM52ZWStbUVlKKLtzWuxjt3XurGMT5PBevYj0Ba9sZ3j3cITmqok97Hm+0pep3/K6yjD/z6CkjjBuvEm4S3yAK8ufppjGMSUiSLgR9i0SE8dcdLx/3BKe7RM5zbnvf9DtRqU6/aDtpfxeef42L7gb1FV1TbtdMZWUbknMxtFkbJz3MBgPEZEV4+zH/HHu/m+DOg3Mej9OvttYFtIGa7/XQ5tMD9XEkvlxqVBfBcGIhV4iJtVQlDRb6csjTxfeXTsZ19qZcKupCAU9epaKGoewhWDwoV+vOqzwHmcoCLW8/UK5oOncwwqORc1sozX4+sjPKY38zsQzy5e+o/EE4/GJt35LjY50gSop6VSv6xIugTZF6STF/gl15xy3erGy/m8s886/Ws7HN8UeW4nXSEvhy4ietsjZFgqMBgkImOBpCLeL4F/JPjiR/j+uJP9S7t8j/Zk0V72e4N2TwgVbog7llJhAANhWfbcWaWnzxQFS2kh6RlYKicAlzfFMQFcogKOcZJQkbQidznTiUuWUmIbc7i6ngJcjVF0y0heF0XOilpXCA75qzyOvscmIXc7JKRwXbnt/ezzHub7N3MfJVDLKL1U2Wjb/Uz4gg3rtwp+Gdr/12pOuW51K9rL+Ly2zy7wTpanwQwBDOKVSzcwRaF3MP8oo6FjQmd8gwAT3eCSeCmJNJ3vi1I4JQD/WY6nQdAcA7j4Q+Y44psXCcAbxAmwkkYQiJZm9lJPQLufRam8EDVRFdt0qj+kxFCSTlVxfUU/B5jb3sWP/GSfKnM+yWunqsd9AnQfZH/i2PswN/1pvnc9r+kYQWXcx/z48+xvrLg+4zgRWE4Am0lN7OOVTkRfjXL+gqgqv+/8X6s55brV7TLtHK5vBJfnitdVyXQXAbTrBFg0CQAQgH1OALekcmM4kp0gAPUwfz7Dhjsj2ddVAmCkkVVZdINIHt4lOFMZC43ipJ6UC+P5+SB+tBfICuw1aUC7akLKB9Ex0kqrkENl4OK0u4p9dZ6nWAIoANrL8xePrYlOcjztL4pipRgPue8Q8RTQzOv/Qf6t4hxJ7FRuLbDfxYugrhA0h5J/Gl8rr/FOq9WaT3A9xTLH6dx+AEfUkkhS9FOW37dRFDWnXLe6tbev8+g4Q9yMD3CVWZO46aZoX2FDVpzdWA2hkl49lisqFDcrDvko+zwuxtlDAIjUFKe0lyRL4bCJfSrWMcc6gemDfswRC1CGaDcFUlQuVUWF6YtSoVFW78mEXvTCIVZKSCN9ihdSFe+9QwCgOF49aWzm/ps4mpYcUHTFQe7bIqifLuALXOG3mt/DMwKs+3Lfd3M7FYaIa/8wr+8fcp8VOEvc6UlJ56QJZwjnFOTNofajioZf1mpQrtsP3V6ahOloSv70EdFm6XWxgIFzFEedLQJAjggAeEzc+M3c71P8iP0O5k6HCP64gYF6kQD5Iay9lc+ySqNFVSj6VRFHmSwrC0O6cfJKygcl3OSdUTbJ36SkKGVv6lvJM1EW4s41gVRE1KsIfju3Hc9xarUTPTko0ajxk+cm+9K+HOcNYsL8Y57TTQLIH2G7TE183bntMKYaTvKabhETWU/2uwyMpIpiP/uVv0gTJ/tK2dt5CbwfTTT8slaDct1+0HaJJMx520pC1hn1nGK7TulfVWp7hQDZIfzIfpDHkv3jWvbxIQE0M/n7KU4QiuMVYA1kv4M46hwhgG8ba3YViSuiPsEubMeYghEd0YtpjlKDXHpcKEKXoRDZh85ZSb4+DKpSYkh/TF7Hfswvq7JR7nX9mLvvx0oSceRaGaQXPxWM4ieFBeyYd0CAtApAxBn340SofJCPiDyAVB472EPjAHie5dNcIHv7USXwLttqUK7bj6W99PHyvKincAJTVR/Yh0GJvCMiuv0Yl11LV9xD+Fv0EcC5ildDbmLt8CgBQtO48EPJw6k8nqRsUgSoCnAAJ97EL4uCKCveSlpCEXZZTi2emOxLj/mKdsFSMTXxxCpkUcS7l/3K6EgUhbTTB3j1jVGszhBojuT1ViT+Z4JTn8D8/J+J6Pg5XjdvD5dDD+TxVgj6Yj6v5SRRVflx/uzhJxVJ4HRuWgQAzv//+clQFmWrQbluP4p20ePlBYudlpHQKI5+lYQbJm54AWI/ARr/nPvdJbL5/zZfq3JNfPQSQXloiagmrnw7od0oaBpzsw9wBDyGI+aT3HeAAOZhXBEnSkHRs5JWAuQNAiRnaVdZ6GlB0bVoEsnFwOb9vZhnV6lxo+hf0eVBvreT5zRY7LcI/GfiKWIY64IHcxwHee31ParqURPaKva2vk5Ev63sV0lC+WAMExWXD7LPMeCwcP97QMfKIef9//yUKIuy1aBctx9Nu8BoSI+gApvDQoO6i9d3G83PNwmlxYe5zRgBQFOYg75GgI78Fz4nwHWOAAOI6LoB/Nfc53r29VnRl9QUkoHdwhyvKsuOcVJRkewedlITNwwG07KsWYlM/RYgl/1L8SEAPcTLTan0uSLAdgsb/Jc6aOm1Ff1PY8Bfy/0mCU5+OM9jCjvDXck+FnBi8G/z/WXgTwQtcYx563G8VBN4CalpnFztzDmc/W/8GAo9votWg3Ldvrd2icopSd72iBtfUimwP7E40y4iwloibuqy0OFDAlDfp92QfYgA3im8ivUWVj9sE4/eG3hh0+dElDqVff57LJOT7GoaS7mUuFPiTzrkE+y/oUhYj/9SRWgcXQRYid4QRSGQlC+EKBFRHUpu6kcm8115DUYwVULuq6IRjUHKj00c2W9g7fAnBN2gJ5Td4hpKNjdBgHM/XtFFUkA5t20U/SvpN5Zj2cjfux05hwZeaos87rmT+U8ZsGtQrtv32V4n8VKWDAtApXVdxnzoHDadmSIi3Ju53xGuGpshgGGWiGjFcYonvUmApHwdFrPvq9ijYSDfE50yQADFCAbeLVw+LJ55j4gKjzB1oclCUbPoi85oepgXVw7Rj8BdoK3k4z7mXoexOqFV7LNFe+JxAvtUaEJ6kmPZxOvsneb5bRLUgp44lITsz2u8CPyX7EOT3xKOgjewV8bnOa5b2GzpWeFjIsAtnxpKnlj/V0qWwsupsB81aNegXLfvs70q8SLJm3S+4KXgFRnqEVaP0DcJoJTudp24yXuAnxHAM4eLPGTLOUEAxzpxk8/hpYwWMQiK/5QCYQsDjyLTkhqYxlV7EEA7Wpyjot1jArAE6KIm5DBXAnFZhq1EnCaiFeLpYpR2q01xvrou8kDuwdV40meP4wlFvPkDvAjpNq4MVOn0FvZBFo++hZUVejo5wqtDzxDfZZVjkORNoL6G1R2icsqJXLK6ixbK1Tlf9P/1k1Bj1KBct++tvSrxUhQGKKG3jflkWTUOELTEeL5/B5vrjOZrCEBZIcB7hABLcakrWD1xFas1VIX3NwR32iS0zZKnqbJNgKNEXTcR+Y1g/W8pMwPzu1JSdOPik1PMOQvowWXXKtcuk3l6hN/H1IeqAkstM5iWUOS+RTxtaLIYxlrpNWy/qVLsNcxxb2R/14kJcQmvxtLM16VBkBKBx8VnO3iiVcQqXv4RBnHK36XqpliTsazU0/W6qP0k1Bg1KNftR9E6VBalb0Ep/5JMS6W394gbuUlUfn1AgIU0z8sEWHcTwDNLgIqAZyH7mchtnuL15W7l8a7lMQRUg9mHuGJxnQJAlU8LKAXKKsY4wqAEXnrqKMfRWVp9VOwnPa8ka4ow9zA/LI5ZlW4CxDXMU2/iJw1pjeX8JkphNvvbxHamupaKdpsEhTGfx/oj1hafEgZPu3gyAfgLXun6KK+5JrejPKcVvKwTuf9cVVVLCbxlxHtpoP2pqDFqUK7b99pekpQpVRYymNGNdkxI1/S+DHsmCDB5TNzkd7OPJgFejdz/PgGmswSwTGCPB1WezRKmOg8Ja85ZbE9Z2mLKY0E87Ukebxgny6QNVsSsCsHejnNSnyraUJQnMJfTm6JoJfQk3ZNV5SYhOevGNpfikFVwodc7GOAF5ocEOCpin8/rei+P925eD5W1i//eynHezWNO5Heh5GwP5sYPcoyn2HtETygDRd89WPmhdhcbQskACn5ilXqXbTUo1+37bhclZXSj6RF8ADuBLef24n/lYbFLFCnMEgAi17UlIgqeJCRuj4lI+i52hvs5Ab7iWiEAaA0/5stQqAfL03axHKwHR6+Spe0S4CsOVo/oKthQlZv8GsCqEkXGirIVJZc+D0rMbWOpm1zppMtWZLpPgGvpuqZx9BXnpbLrp8V5LRKR9SQG1S1i4tLkqYlCeukpYhJbxzplHVNqkLH8Dpq4GEdl2PKvKCWR5Dmgvy+haf9RJ/Je1WpQrtv33c50p2RCqNCf6vMhMgmU5bPbhAxLLmbjxE15SHsSTr4WohuGCP65n4jOhvDj/CkBCnps7iZok01Mlwh8+/O3jIHET+9g2qAsbVaCTSCjBJwSfH3F+e7Tbo6k6FKJPXl8gCePQ1weLrnbFF6ZoyKeEp4QVIvKksHm/PtYqfGcAMm+vAYzwP+DUE/M5n6DRDS7hhOyN/P1CgGqe7gUvYugkhTtN2k3TXqSv4+ApsqlMdieccNVVWl8r6IofhKJvFe1GpTr9r22jijnqNCfKlqcJ25yydGUaJJSQHxxi+Aur+KoVgmsPQJMbuBCCxWXSM0h1zOpJxRBXydATIAn5QO0LzUkK80D7P1QcuBNnITSZyo0qYq/xZMfFe/rCaIPO8mpSk6RtygYVQgqObiCFRxf4Mq97RxTd17rZez18UcC1EcIEN/Lvn+POXZx15oEBJpKfg7gyHgG0ytDRHQNftLQU8QLlXnntdegKH4SibxXtRqU6/aDtXzc7MHa2HEi+uwhCkBaRIS7iRfanMyfvtxmDqsctrKv/4244XsI0F7GZdPX8WP0Mfb7nSSATb9PCFC7ih/xr2FOWkCryeAo9xvFKgbxvJK29dAOvn0Y6A9znFewXlqKCfHISradYrmaystFWcjzowu7vS0SgCyp3TWCO1chjirzbuCKul8Qyc4/E0D9HBf17GCJYumRsYyfDjSZLuT4ZnO/7RzfbmnDWVXVN6Yc3hR+uQbluv2QbYgAvRlMBcwSN7T0sQcEUO3k+/fxkkUV8dg8gW0gf0lQFo8wfzqX/d0hQPkwj9+LlRh3sWZYEe1Mbid6QT4RTUxVqBCkiXnyMQLcVUXXhyNuRbuHRd+KFmUbKt8JUTeSualwQnz0Xn7eKMaiSWA3r9spAcrzuGJRPPVnhJb7HlFOfp+YGPewib6eNiTLU4RL9rma5y8tuFzgyOMOYDXIKQHGpWztQsrhTeGIX7fVoFy3H7Lt4moyPfLrBj4hHntHCTAax7pX+fouE5HYHAEUV4ml7G8T4PMxXij1Fu1r5gnYVFatR34pKsZxNZwkeKrCU+JLRSK9BIBLJ1sqK8ShquqO/FyP+kq4jdDuqVzqlXcwZSCbTwGveOG17HMS648F8t15jfawKoPcfjH3kfPdSo7rz3kNBMTNPMfBvK7PcdJ1JsethOICLqeexZy9JrcSlF9GOZwL2G86WNegXLdv1DpvkAv+PisGOecm2iFu8E0iwpokgHKIMJ2XL/F2fjaHlQaSUwkQfo4jZHGffYTKooHpCknQhrAxjnTH6rv0ghDvvEW7sxu0J/a6iMj9qDjnfdrN7VU1J8pBNMUwLsHWdodYXaFy61FsIiQqZIVQTkjnO45X3tjA3PYXBGA+JMDydv59iGkIRdiTeF08TU7Lef0lJ5QMUE5vx8SkKN5eZeRSoaiK8Ky9gnJoA+xXOAa+Ma0G5bp909YZzZz3d1kMstWxL5hCkAJByoS9fK+Zr2/g5Nh+8Z6SV/KKeJb7TRGP53r0l8ZVZkACGHk7SPnRhQs0pMVdxhNBP6YLRE0cEkDRi705BOCKKHuI6LTKzwXCujZKyB0RQKtofAoXbJwWx5OCRdV5LeJpQZ4W6wS9AH5KkNZZ1McOMZGM5bbiuDVhjRKR8PPi+s0QE+YRUSCyiXn/T7B6Blys08crItvOCf0cwNb/1hkvfVFfP+VWg3Ldvmk7k7idI23T70VSf1wu14NNZlaISLaLuOEbWKI2gVfuuEmAkh67F3EJ9fPcX8CymO9LHrdOAJCiXpVE65G+yu3FpSo678MrY89iLbAsNxWx7WEQFHcs+ZsSdgLSXSzrE38tHfImTuSJ393FK5Qo4tzCkbvOaxBTHV/hJ4st7GAn3nuL9slClMsgLk5pYF59ouhbFMoasJxPROPEhCDjoQGsOVfZ9KsSeq+StHUWjbyRrQblun2jdsFyTp034EbxeRkt68ZtYBnYDtawzhZ9lvrbHVwtJ33wPQyQrXz/Li7P1qP/Ci6KuE6A2SKeHKaKY72LzXZkUq8oVx4OMs+R8c4tzBULRNVOcESv5FkTS9/Em6vQQ8mxTYJmGMhjNnFRxwQurFnP7WVp2p3no/3Hc0x6OhjM/cEcvcqfSytR8hoJtFXY8Qg4zQiXHMfVvL6Su4GrH8eIiVkJv05gfamk7U1RV7yq1aBct0u1SyRXyhtqiIxuq6pSxHneDddZSNJH3NS7BDAfE5GnfBtuE6CxRADc3TzWTeKGv4VtICcJYN7OY1zHcjYl0fRb5deqbJMdparilJAUkCmyHc39FvKzawQI6pzEUR9i9zvRGsdYwaHIXA5yg8XfUnyMY+vN68S9qwlLtEY5Kd0nJplBAvzliCcPj33iSWQYr3/XIjj3xTxnUSDL+XqJULBId7yPo+MVbFQ0gROcmmx3i+/i3Gj4bQHdV7UalOt22fbSR8vyhkrt6Ri2lHyWS/m86oYbIaLTQ2KV6T4C5GR+s04A3yoBxA0sd9sh+Ex5MGg8Jzg5Jq2sItUtXEqthGKFV0s+ymNKrSHwk5oAbN4u4D3Gi5+C6RFRCKc4ki49kCk+kwZa5cVXsp8TrE4Zy3NRJKuk3+f5t5KgZZn2F1hxIundfl4vlbp35XFv5nX7HHtl3MBPHUv5XcinQhK9lexnFdMco3md5/EE90bywd9Gq0G5bpdtFz5anpegyQh5lCwGqapqomM3RVKN/NkkbvyFfH8A+AjbW/4nAjxGCeDuITTJMg0S/bCKNcKTBCe6iymSMQKAxvFKHCqZPiKAbx5XEzaKsQpwm1i2pwIM8dIyFurFwNyN1R/qR8lHJcWaWNWhasETApAF6pLuKdGpwhXxvEoiVnmdNvKnJ6/FISFn+yS3XyCePnSNHxXfxSc5jod5/T7Eyc8VbHUqVYrAeD772i7+DxQhX9pA6E2Xvb2s1aBct0u1V9xM50XRuwQgSMdaFlQoWhKAysFtmYjAuoBfYY6V/HuF8Lc4AH5D8MgPseG6ChiUnOrGXhcbWAfcj8FVEauM3k9xGfcoNu1R0g+8Aob8J65ibbEoCEW0Ou5aXqdSi6wIVPI4eV7sFOOXtG03r5E48G0cZYuCWMC2oPvYC2Q2xzie1+lLAtzvE0B8mygeUXXlVo63pJXka7HYarWOqqrSdVjFXsYa61lTTqHz/Uu0N8LH4uu0GpTr9m2086JoJfH0GD5KAIoc3oYJ8FSkWRF85RqOvr7Aq4vsEZzxEyJiVhGCvDKu5c8m9iMexMCi4o4GpiG2CGCaon1xUnG8fQSQSYa2ib0g+okoVgoL8cMHxXbSJJcKBDnFCYz38WQgQFa59Cgx6Sxiz4yKoHY2CDCdxr4eWwQwTxBg+Tuc1JPPxxFBQ8xgBcdnuCoPnAOQ2kSyvcc46h3AJd7br9Kr8/rtjfCx+DqtBuW6fVetM/G3QgCAdLNSUNwiAOOEAKwZMqtPgPn/mQC/Bs7+LxGg9JB2edYBAXINbJKjqjbZcYp2gPYFREexDrm08BTvq9LvMqoWxbCLy6glYRNAH+b7irp3sWuc9MaSygn8uvOabBGcbiN/VIW4mddA1YBPcKXhL7Dz3GxuczOPu4TVFQLiBlam3CWeHsbwpNCf/ZwC6+fJGROES/XNeXr1V7ZzgPytipDValCuW1t7VYRzwednN6AMZvLzMvEHcSNPE5FcP3YpgwCNe0RRgoyJbmK52EC+r6KG09zmOgFAB4RWWQZFkt/NEKAtvrc/97tPRH3io1tFv5KyjeEotjQI6s1xrONKN/HdAvZDvKqJgFcRqLyZ+zBNsExQDJPYZ+PLHOsIpkogQPW97HOVqOY7ISJ+Vf6pEg+iZLqFo+tGsc1Qvi9FxhDB1UtS93mOcTB/q+lJSE8snZGtfD/2uXx7aymLstWgXLfO9iq/ASXLRnJ5HkWKYFvGK7j0tlx7b44AnQZeRXoNA5Qi0VG8COkkAU7TRFQ9kJ8fEhHjRr6+RzyWj+KCDXCEvJvHUkm0Cj+GscRNlMIuLotexKAsHlml1ZKRNTBPfVL0JaBXqbT45L4c9zZBv0idcERMLNPZz23MD/djWVlv/ig5uZzj2sYuc6J4HmMKZRav9rGZ120xx7UK/Gtek0ZenzUcxY8BfVVV6cmki0Lq2KG+6c5z6OFFr4uXtbeWsihbDcp1O2vFysC7vFh9V5a4KjE1BGx13JBkH42qqkaAcl21UczDqtRXIDhOPDqvEgC1ToDaNSIqfEYAWBNHy3cI4GgSUeYYBsMB4rG+wrrZmRy//C52scvbIfa7UGJLCSr5SegzURDSIcvjWFrh/hyjpF+b+F47wfTJGEHr9OX5DhHAuYWj2F4iWhVH3SCi2HnMk8uZ7X5ekxmcxFzFiVF5fEipsZrjktrkQR73Ni6SEU0BpqJUNj9/AV8sRYm+20u1t5myKFsNym95K+kIbFyjSHLogmh4u9ins20TN9a93OaTqqoOCZDYIqRWd3ABQg9BQYiG+BMhheshwKeX4DoVsfXl6xt4fbqPiMhMvhnSEg/kMQ8wJyvnNUXF4oYV3Z4QgCSNryLdDexJLHmfOOtjIsKdxGvSTWOTIlEH4phVNThERP+SD07jVZ7XceFJV/avRF2DiG7l4nZEmDGdEralmziBKPrnGZE43cGWoDqHadJFrtVqPauq6kFe815gstVqzdOuQV/MfS8C3LeiHPq7ajUo162kKzq537NouNhePOILN1wHwEv2Ji+F0dx3moh+AX5LgPGHRHQnM3Yl645xoq1JO/+rAgvpjDcI4BkkAGwGr4Cxj4tA1rDBzwA2tlFkKimbtL6KhPdxNC1qRNdjGEfp8sTYKbbbJQDxCRGFTuHJQZNCD46aPyMiZh1b9EQj932W247lfr/Ov7UCiWR8erIYwyqV63nOUlWM5fh2KKiIqqoe5Xsr5+QRXipxqyPeb9ZqUH6LW0FXbNOR8a6qaon2aFjgLT4RXrzxtI1kb9IdNwhAu0sAq7L+/6bob4BI7PXi4ow7xGP5PHZAO83PGzi67cJUxTQupxaoqv8TDHJzWP7WU/QrqqOs4JNp0I08z0MC4JTMEh0iuRtFfyr3nsLRraRvS7jiT9HwKgF6fUSRzDEBpJpotP0RsYzT32PFx5Pc5qC4rtO4IGQw+9wgikhW8BPGMbCbxkIQxR/zAJ3Kire5sOP7aDUov91NdMWmbq5zot2hqqokK1NiR4Y0nW2X+J+6SwCoHvmXSDMaAhgeEuA0TQDUs/xMybo/A/+Ynz8lQOMjInrcwIUd+1hxMIuNhhoECB1gMD3GEfch9tPoy7FJola63MnbGOy3LP/iVrF/Axej6PqQfancWNy1JHcqrpEr3SmuolvAi8LKUGmMAGYVd5DX9b/mGPT+Lk6Q3iC+sz3ie35EezWjHOmGcuwDnG+z2pmAq1US32GrQfntbudlu8sbDtqjY1VuHcELAK6orJ+IcMFRnm78j7B3wiAR1XXjlY6niEh1Ko97gwAJ8aJLtEeXZaWeMv3SAEOAjpJz5aofU9iLYhzbe4qekFJCvhLichV192O9sJQNECDcnX2PEBH5FAb7BSJCP8p9G9j7WC5sLUJr/DlB7/Rha857xEQgDXN3bj9BUEBdxIS2mtdtJI/ZxJajD4tt57Ahvv4HXuCLz6EjapXEd9hqUH6L2wXcX6kvPS3ea4uOE5DnCJCYJ0DyOhG1tggO9ZgAYsnoxov+GwRgrRLaZNlNbhBAcg8noeQT8Wes1RWloAnjBK/dd0RE2Nexj/Fp9j2c4xglwAps+C5eeBQvt9TEUbZUGg3sA3GEVwmRtE2qC7m2qRhjHi8lNY+lZ/3YTH+IiHKniIq8G7h0XAnGm7hC75CQvT0n6AzyGkhieIiTezIS6s/zndHrgoZ4ZUl0YdfandRGTWN8i60G5bp1trOiADm7FX65nXrlcQIoljHwnWA+We5jt4rPFzAPPEwAjMBjmyghBhvWb+RxJgmQXSbASL4aoiFOc+x3iYjzN7R7UUhJob+b+XufAO5+2otSGgSoiiuW4ZH0vYqcR3HysYd2DbKAHAy+kgFWxMQxmsddyHMTjy2Z3UNsCarJp5vghr/AvPkf8QIApzlWtcFiTJrETomJAazEOGuX5I1rGuM7aDUov+XtnJvvVZRGF/FovE6AzEZ+Po0f41eJKOx9AvRWiGh4kgCYr3Dp7gkBzt3Y4/i9PMY2piJO8vNGvifFg4pJBIpKVA3h1UCkW1YBhThyeVy0CLBSVKmiECUDW9hXQtH5HgGgO7joZYUA0YrgyQ+w74UmKCUSNYYFAnCXiGhXhS5bROKulwDvG8SktEWYMx3k6z/iieEjvEbhAKE7FuDqqUfttNVqvSwqvgzg1jTGd9BqUH4L2iuinrab7wJKo5TKSao1gVcolivbKSHnOiQAZAqvYnGViO7GsSvcIaEC6CJAZxIvmqokl+RrK8QksJnHVgGJtLxKWlbE43wDy/E0zlEsQdPfSqqNYXWECkTWsJnP7/P3z7Gd5WHuM4lNgFS5OJ3XRMUd83jVjiqP81l+toSjdUnUNvN6jWK533we82Fuu5zXXIZFa7h0XEVA0mBLf34WFXcUB3U25Qk6i4jOWi19+25aDcpvR3tZ1PPKaCd1q/uExlbJtTVc6XaNAJyn+fcjAqB2gA8IYHmc+6q4YgTzv9IbDxJgNoVtJLexkby8KMawsbwoCOmOh3J/qTQauZ2UDirOUGJvPa+JSrvljaGxHtFOOZTl0X+d+01hx7cy+j/K67CAV7rW8lUyYDokIuID4mniKl7FhOL6kOPQBLiJdclaimoBL3Sqcuj+HMMpsJ/f5Wlew9MOr5Iz4O3cjhp8v7dWg/Ib2C6gJF6Iei7DGxbbjBEgfAB8nCqM+aqq1rDBkAzl7xGgMot1y1vE4/ldnJRTGfUo1h03CKBayO1v4tJsFZPo8f8kj3kV+0PItGiJAKNDHJnKFlOc7SkxCdwlJpmyBFpuavLOGMbVjBNEFKvIV1WMisDlh6xkoYyQuvESTZKldRPc8BamY8ZyXF8Q0XBXXgf1q0rBcRw9H+e2q7mNZHhgiV6neZCefIQDrz1h1+3bbzUov5ntBUrigqjnbLuMmKQWKLPx2kaP6tvAQNHfEJGc+z9irfEGAbYTRPTcxP4K0sb2EtHdO3jppR7MHT/KbX+DTdz7sH9DM/+eLMZYWmn2YitNSeJUlafKPUnKZAmqlTsE/nsENSDz+Yn8fC6vw0aen6Lw0uZzNs/pap77HkHVvJfHHiWePJbyHB9jW1IVcyzjSsbR3O8BVruIQnlCTGZl+bsmHhW6nKlnOha7vdCjoqYnfphWg/Kb2c6LcC56rweX68p0fqOqqhWsspBcrJeI+BoEGN4jAEo8aoPgO/fytQoxjolSYEWqWlJI1pLPCRD5GV5J42cEqAzle89zDBXW3Q5iK0zRBR/nNldy7FpPT3pgaZrv5XmdYPVGhde+U4lzF1aHqKCjmwBdaaaf5O9prDo5Iia5E1ycIanhVh5jqzjmFDbnf5Z9qv/nhLZYjnaalFSN2MBLS2mifJTb6SlJxy6fiF7wqKir9X74VoPyG9jOi3Au0pZWVTVEPL4/IgBlhrjxp7HcSvIzGdz8N9go50ruu0iAXCP3myWA+iGmJ2YIMF7DPsJPCMB4h4gc1wgwlNmOElZQ+DNgLe8yEeHewwuQ9mGVhMyVTgggX8Pr9IH5XkWT4m9VlCG6RLSHJhTRKfdzu99gzlrcdE9uv4Yr+2TP2SBAV9vewQUwB7lPN15sdAtPkFK5LGEnN6lLpBM/LvysZ4mIHSyDuygSrmVuP3CrQfnta503naJZaVeV1JK3g0BauuFZzC0/J7yOT4ib/Qr28R3Cng9/wVVwfdnHu9iu8q8IAJJGeCD3k5zthADdSZyck2lQ6Yfci8uuh7FqQ0Ub8kfeIyaiKs9vI/tbyP2281xaOZ5DDMrzeV2u5ZhLP4tV7I+sCH0TKyDm8LJSCwSg67ofEZF/L04UzhMTy26r1XqSUexsntdpuUJ40kkj2P+51B6vdPx+Wat55B+41aD8hraXPIZ23nTHBPAMEo/ETVx1pyy+KsC6cMJOnLIc2MSzSs51SADXHhEBK1qWi5nUDgIgRYdreFn6QWze040lcPKBUBJP0azKo1V6LfndOPYOvoZBdJDgaEWp9GFKYRMby89l/2u5/z5ehFRqiAOiLFoTm0quF3J8is7F7eq4qvRbyHHLwnQ6x3MFTwZDFPx48R3vF9sfEhE0xROR1jJ8Zat55B++1aD8E2uvwfld9BjayS9uExRDg3jEfUTc4Ndxsmoey75+ifnRSbx68gTx/3SV4ESnsfewTN9HCcD7jAC6VQKQP8frxx0TSgNVtA3iKrYFAvBOcOHFODbZKZUQ4ps1CVDs9wBz4JME6MmwvkmA7zhWbShav4LN8ZsEcC8X2/4CL520ndv8Nq/JHPbSGMdPDc+BP2SfH+Y1G83ruk8AtSJcJWNVvQj2JlEBi3xG9FlXRtHf1oKmdfuOWw3KP712Wc7vTPakiCn/vk3aSaZn7hD2rZChkIoQrhCAskUA87sE9yllgKLkXxEArqTSOzjR9pwAzx3g74j/OVEg4ot3MWBfwd4SohJUzNHEScQhTF/IiGg4jyfVhTTJKhMXt/w58Zgvmdn7mGLYINQkk7jqsJ8Azp/nNdimfTWRJ/lbYC+q4wG2zDwhJqtf4oVc/0JUNx7ntb+S476f/Y2QGuPiOyx5ZCktwH4bnQ5+erKAr7mgad2+31aD8k+odfofdzy+KjrabrVaJx2yp7GiG0nOBggAmSH+DzYJQPiKAIMnBO96nYjsHuLSZiX0mnhR05tERCkaYQTOlqlXKfIujiilmZ3EWuAJbEx/RLuhPbgMuxvzvDImkib353gh0GMspxvAcrUrROT/ID/T9dggIlvZch7hCPwQ+P9hmuE25s+fY3pEhvi/w08CE3kN+olJbBL7eshkaI8A3OXsr4sAaqlgxgAKP5JRHDV30eHgl02+JQJszvldtx9Zq0H5p9VUSrzZsaz7GAF+e0Q0VkZAZaGA5GXrBJgMY28GKQwa+f41AhTeIUBqnAAkVcANEVHj7wlA/wMRVW9j8x0Vg/wCy982sdTuJLfrz/FdJ8B1MX9GsNWmEoc6D/lTHOY+B7gqcJigSCbyOJO4DPk0z03R/yZ2aBvAxRTT2B60Iiad1eJ4o7nvCpbEtYq+/paIeB/hlaGbePmmEwKAISaifbxGXmc7A9KOiRgKB7/zqIlOjrjmjH/8rQbln1brvDlLiZRsK3ty9YjzIuYGASYDBLjKZvIL7GEs2mGMiAaHcUJNkeFevn+VAJhD7Euxgv0r9vKzA1wq3cROZos4Sh0utl/H1W7N3EZ8syJoKRXEB/cQILdMgK+M5AVyqzkOyc7m8+87uGCE7L+fANPruJx5FU8S3QQQq0x8CE9qX2F/kDUCmPuAf8j3lvP4q/ndTef1Gs3zVqXhSF5fOtbIG8/vaLEwFJK/dflUVAPvT7TVoPwTaB0R0As3J+2yq6u57WJVVQtFMmc3t3+PAOcHuOjgJgEINwiA28SPxrtE1dofCCB8hwCbRm7byv0VzT7A+t5DnGiTfEtKh1lCCtfK4+4Tkbj0wZNF/wI8aaP7cJStMmbwSiPioMELtq4TEekA9s/4OQG8rRznOk5MVthxbST7PibAUxHzGq4clA56GLvJPcuxX8H+0OPYfKmZfWmSkvZ5F0fCl5GxqdXUxBvQalD+abS25EyCtHxx2wpDMLWgx+stbZOJvQHCJOhKvp7E9IFASRl96X9V1abS5AHikbyPAKtFIuIbLPY9xMZCUnrs5PGkgriV+6vabp4AQ+2vApNRXDLcwIbtK7k92J9CHLCM3aeIEuY5XIXXneMYyP4WCXBczc+vYCneI4Jb3yQAXMk0geWjPMYjTP9IufKLvEZXcel2HzHJdRPgLAc5VQ1q9XBpvztXeNnO89qvOgzma2rizWg1KP80WmcEJJphmSwSKG7cUj61nxG1KsBOsVztHrallPZ2HQOzfCJmsEGOyoEHsfnNDlES3YWjXPkUD2EQV7WbtM0CanHLA4QkbJEA4d78PVLsv1ech4pbDgkgEjXRQ9Ax88Sioteyr93c5w8EGE7ntdAThqLwqdz+Gl6pY49IyknPDfYr3secvqw0uwgaY4MA5i0igThfXNsb+Xo6tx0AVkqZWseCAiPQlugrn5Re5otct59Yq0H5B2ivqxXNKHeXWMR0Fyf8yqqtMpqWo9ks5ohlSK8IVJl9Ja7kN/En/Njdjxfg/DnW4DbwMkg/w0ZDCwSIvUeA8Ro2g1/GlYB9BIArKVj6NuwR4NWHFQ1zuIIPzLt+meO/lWOQT8Sf8SKjQwT/K9N5lV9r4lDhy2Dus4kLVwYIgJZXRRMvxKrI9rPs7yYuONnJsXfhJ49/yv278/qtEYoWVeB1YUWKmq6JJHi7cPb/c/akVLc3q9Wg/MO0c7WilzCjb+BIc4GUnmVxwD4BGHewJG0WPzIf4Uf/CUxNXC1+a2WLBRylXsUuakNEBNlPgO8m8WjfjR/DVS2n3+KDTwigeowd0iRpE0g28zyUgBzLbVQYIRAawsY6j7GN5mMC/Kezn8+z36+IqPYuEbmOEwCsJ41+7IKn4pIt/FTwOPvT/bKOo/nr+X6LmPR+T+ieN4hJYgJXC4pWIs/1QavVOjpHtqb2gmFQcf7SVG9Ttzeq1aD8w7SLEjIvE/bvEqAq7995bELTwAk1KSKGsM5WXsJHRJQn2ZciUD3eP8KSs9t4BY0WdkNT2fAiEaFOEYBzTCTu1rDN5BgBug/xyiHr2I5TfLOiQ0WWTcxZi1OWc1sr+zzBVXkqx97EfsxSSbSICeNn+fdwjqeZ+x0TEfcRXvtvjwBsFaYocbmNK+6O8JJREDyxfDueYm3zH/P6S2+sROpebnNU5AR60zxopdVqHb2EI74IrOv2BrQalL+ndk4U/LKbrS2JU+wLXltOBjeP8dp14nlvEdHjPPZdkD5XHKtkblIUQADS3RzHdI5xN7dRkcM/EzacHxCgSX4+i9ed28m+VWl3QkTwmhhmsNpB/g9SLugxfS233yZA9Xr29SDPs0GAag8BsFJ6zOBVUVRROEfohqXmuJ993iSi9I8xkC9lf78muGlV5zWwt4cia0namhjEr+TxvirGvoa14Nu57XkextOc4+bW2eqE3pvdalD+FtvrrIXXuX2xzW6xbVdVVV0E0BwQgPUFcZPL5EdyreXcdxHTFlcJYJMVphzUTnLffQJQprGG+R0iYj7FADlLRNjX8nOB6h4ROd/CYNtPRIUqi1YUfZznJDnZNhGhNjCv3MT8qSaUyexXNEAzr9VpjrvCxRuSkQ1i03xprkewzWcTmywNEiCq0uyPcz8V0HyCJX3qv5mvF/GK1Rq3zJT68j0lPNvKoc/xL94v+nwdGVzd3rBWg/K3215FP5S/O7fvwtl0Gc/0EBGpig2eEzf5XVwhdxWX+k4RSbZ+DETy8+0nwFVG6l146aJ+XPYrM6ITXG49gL2VlRjU57LEPMJ+x+KwVQ3Xn8f6ChdnCJiPMUeqsujDHOPtPKcRAvAWcQmyKJKt3F40hxKFTWyA/ycCDOUZfS37+HO+7skx6BqLqpAG+ySvzWZeC/H3A9nfVayGWcnr84QObXm2zv8L/Q8ocady6bq9pa0G5W+37WMHtrZ2wSNnuX2b9Im46a/jSrlmbjNDAMkYroY7IMDogACW7vyZISLRG0SEuI15zzEiylVf0gQ3MQ+9gCNojV+Rp7TLq5g+kGVmL9Yet3Lci4TRz2yeE9nvGl5wdTvP/zMCoHVuizm2Twk++G8xX3yUn4nLrvAq1QLNBlZGzOf4N/EafAt5/R4Vff2H7Gcux7ae+4rKuIW14MfEE4QULV/me9cJrnjhJdxvWQZ/ZiZUu7m9va0G5W+hdehJz5M2XbTPNC773cZm6xCgdpO4+f+fBPCN5XE2CV70r7Fy4X1cLddPgK14zn4CXOYw2Cm5Jz56BPhHgi4YxRPIU1xoIUCXadEw9ggez+PovHdw4k0a5WM8wVREhLmUx3iY7ymav419jQ8IUDzGy0zJArQ3+34I/EdMrRxgfrssZJnKsUrzXCbfhglAvo49mzdyvJ3m8YO42k8a5mfYYW8Ea5o3aS/6gcLRrYikz5PDQc0fv1WtBuWXtK/hXXymJ73EviMYHMbwemrghNK7BNAJvFSxtoNphhkCoHtz+7sEyMn8/Tj7GMYqhud5/C3CdlN+x40ci8x9tvCq1JMY6B/n/jcI4FFZs8qvNwigW8crauzn2A4J3naa4IkPMAfdyONcz+03sb9Fb45jFHsgH+V1UQXgcv6+ir2edX31fYgekc+EvptGXhfptWcJAP8t9kFW6fk2AcAq4lHy7pD0HKmqapuYvKA9Z3AlX+upQ687W10y/Za2GpRf3i4brbwgUbqkOcwpAQLXcXXZYn42QNg/9uHk1jKOOHcJ3nKVALUZ4CMCOKUw+Jd8/x4BvkqybRHAOU5EpDKKP8WAvJefPcv+F/PYNwhlwgG24lSEqbJn0TBrWEWh0mbRHP+F8BZexNRDF+acN3O81wiQFc8r03npmiV5o9hfybdlAtxv51gVNYtrX8k+5Q4nU6Inud8jguPdqKpKEXlJTamYZh5bnO5WVXVM/C90VtopEavXZ3RFZ6sVFm9vq0H5nHaOPeJLo5ULbqBXRTryMJghIrItAmR6iGTdCCH/+l+xCc/PsI/xJAFUKpOeIwBRSa47RDT4BMvHunKbOwQwCmjEkx4SQLGF5VyjwP+U5/FrglJRZC/QOcn3Fd3KFOhzAjSncrvnWOnxyzzX29mX+NmVou9prE0GJxyP8QTQyv5U9HJEUBlXiUi1D6/+/ICgeSSX28UqD8kDZZz0DCcjwYUf+8VraacbuGpS0kU4f/HaEqjrhF7dXmg1KJ/fziLkjsz5ue0iH9uyNPqCJdy3qqqaJsCmB4P0O5gOeUAA17386SVAR9rjhdxHlXXP8KoZh/nZOF7lWCAsID3B/sVTBFCIN57L7X+R+14lgH4XJ8FGcaFKA/Pi6meJiOD38hiP8nxWs799HAUf5HFEhYxiP4kWru7bwgU0ArYpAnC3CQDeyL8PsU3oOlHMsYPpA6320ZPjVzR7VmGXPhMNHGEPE5PcTh5bRkF6fWEEXLe6varVoJytQzN8aT6vWGFY13Kr4/0+ohRa7l+dlIgoizLiEi3QIKLTD4uxKTF3D4OyIrejfG+O9qWDVKEmE/ndfE9+FUrmdRPAJztNeShfyfOQf8YfiElgMseyjtez+znBOcsx7ZgAYJka9eCEna5xM7efyfNfIiajhwQQ/rs8/hd4dY5Pct+PiAj8Vl5vcAn6MAHWkhKuYE8N8c5bOPmo66LFRgXI7+R+PbmNOOYyWVcaCZ3SMRnXrW6XbTUou3VGx5fl84Yw0HRqkFXCfJp/q0KuiygMUYR4H6/kMUQAhBJkMwRtoVU2pCtWNdtf5d8zuc+7eR59hMb5CMvOJGXbJUBwPd9/hwBeRaiiRrpxdd8pAWZfEGB5BPzbPFdx0OO5zVOcCBzFVMC13F5eGesExaGqu9l8byWPc5jvNbBU7g6WBjZzXJ8TYN0gouel7ONOjk1FNn35dDKOV4ZuZr9X8bJSneoZ2YI2gePkmNsKfzpsNGvlRN2+dqtB2e3rZrv3SX9bOIuQVQygqFsFB6I1TottRjHNMEJEs6MEUJxgPvQKAWQD+SOt71UClJ4SAKay4D6CnvgCrzIymJ99TESQJ0SE+V72+ReCgz7J7Y/xYqOHuHLuOu1GQ58T0eMkAcCfYmXJTI7xhADLA+wfocTjNF4IVcUuOodpXLQxjJOd0js/zWPKQ0OTFlhGeEjhsoYnJZnZS3GyRxa0VFX1bp7vLjGJHOcxts95OoJ2EK6VE3X72q0G5WydybqLSqDP8budJgBG3Cr40fgxASRVbq8iAhWNyDPiBtYOrxJ0xh0iOhbnupLb/xMRDf8NAY6SdakwZAhTBxuYN1WRymgeU30vEVFqLwGGQ/l6nwCtHsx3y/9XEf4gLhCZJyrk/kSA6b/J8xAIL2G1icC8LFsezrFew0sjXclj3cnxN7Hi5C72nRjIYy1jGuOYiMD/QkwQj4rvbgCrQuQUd0ZDJCC/S7t50Y76yKj4vKejXaiVE3X7Zq0G5Ytb+QgK5z+OiqLQe1r1YpcXXdgg5FKnuKR2gIhmx/Fj8y6RoLqb26zj4g0IwBsjKIcBAqS2cQKuizB33yVA9We5vyLKB7lNLwFYP8MWmuJ8RwggVRn2YPH+x0Rk/U5uM0+A/2RuPwT8N3i1jj8SwLdA0Ck3CKCT4qOfiOb/RExmv8rPfoP1xE9yX3HcawSnLNvRe3lexzkWjX8HW272AQdJGTXyGKV1ZtmeYHMksCRRNIUqH8tJugbhun0rrQblol0i2df5OHrGD+ffXcTNvkyAxx0C0J4S11pAu08AziQB3PIillH7MAG8K7n9IgGcV7AJD7nPJ9nXCeaB14iIcxD7GoN9KCQzewdH6ccYfNcJQJLe+CB/FghAnSUi0qfFuY3lsf4ur+EaQWvIZL8vr80WETV/TET6clW7n30pafdhjvk/Esm82RzfgxzfNI7kB7AaYik/v4pldmVBz+28NtvAaRZ5gCvtlHx9SlA8h9g0SVWbl1Ll1K1uX6fVoNzeXpbsa7sJO0qr7+Co8hSDs+wu+wnAHCHASfzmOwR4LeS+twgOdpAAFz3yC+iPCSCvCKCuCOCYxOXXv8fAcg1reRcxF/wox/Mh9pyYxytOyziogV3gegkAvZLbNQne+7d5XkrUjefrNSKiHsx9F3K/NWKS+DKP+T/k9nfy/T8TgAsRsco4SAnKh5ib3iei/3FicrmH/Z4XSBP4wv5UnLu8LkaJCXCRds55KM95GBfUSBtdy93q9p22GpTbW6mM6D5PW5zbibaYIW5u+SjcJEB3BlfeyW5S5jf9BFjrphfXu5OvVUjSl6+vEECwTgBzGQmPYAvN8Xx9L//eJSJVucg18/MJbGupoolDvJ6eEmbX8Jp+SopJ1lYmFD/BYD2av0+yD0nQPiF44KEcszjvxwRHrmTnXSzh04R0Pa/jMgGekgD24wTkDrYHvZvXSl7MaiN57prgVC4tPfJAse1ujm0qz78H88213K1u32mrQbloHcoIPWqDfSGkqBAnPEyAjZQHSv6c0L5+2ioB1Eq06WaeIyJJ+Uw8wzrcf4fXgVNf94jHaknZVISxSYChNMraZ44AWpUtaxmjD7Dh/Me5TV/u052/xRHfJsDreY5nEhvuiD/WmDaKYy3jte1OijGWpd6iOY4xD0xe41ViAugjIup+nGhTybSkcbPE5PIVLmPeIJ5EHubYwGqL28TTw1cpb1NJfFdViRniOI/R00FV1HK3un2nrQblF5ui4bPVP7ASQY/Qu1iiRr6+Qdysf8AyOVELDSIS+wBzxWu4pHeRAHhJvpSY2sMLd1Y4ydfIYzzP1wLfk9y/L9/vxssWSe0xkf2LbtkgQKo/t9dqIM/x0ksyWtrO8Zzkvn1EYm6c4IT/jJ3ixvJ8enNbHfM2kdS7hiP1BjaY78tro+o5GfT3ALeqqtrElM4ujnp7CPCWImIujz8iLwpcjNKFHdzA37mUKvAipdG5bU1h1O07aW8tKF/k4lasl3YWPeEyYnkhzBJgO0iAxj3syQABKnPEo7bUFleJhNUkAT5bePHNAyIqnCMiv6fZVys/HyYAcyrHooTgfo7hEIPIBE7YHeX7EziK7cGrLfcXffdhre7DHN9kjusKXhj0KK/JXdp52XcIsH6C+eMPso9dAuzfybF9iBcsPcaaZ/2ezjHv4ySortU0LvOWX0iz87usqkr0xz6ObE/z+Mv5HbVJ2AoVhp5MXqAoarlb3b7r9taCMu1LLp3CC+vhSUM7QGhWHwNLuc0aAbAjBNDsYfP3KwQPeg/7JF8h+OaK4HkfEkCjRNwI9nyAADl5F+vRW34YQwTFIYnaKnaKu4WpgmcEiAu4BXpPsMHPKV6VWt4YDwngfYrNd06IieAZwQ+P5DV5l5CzreY5dmMVwz7WJD8nHdTyfB7ltuK3H+Rn1/NvlUVPExPOKpFUnMzzlFfxYvGddRFR8Xar1TrJMun5/EyRssZ2mpV93WUlngyDigm5pLDqVrfvpb3NoFw+sjZIfwo6FBhVVV3HHORzAmT6CCD5RfYhC8gt2gse9PgvlcY25jz/GvtCSKL1DBdYHGDnsiYu9hBQayWMAQLgZMwufnqUADWZ/FzLcS9jn2FRMQcYVN8rxqjrs4iXXZJH8iGmJpaKYx9iqmUWrzd3ipUTSrDt4NW5FYE3CdC+me9v5BiPW63WfDFpHhAJt03afYrbgLQ0hsKucGXC9jx+uKYo6vaDtTcalF9mNN/xyCo1hW7cMwUGTlg1gLtVVd3HxjUPcYJN4C7fhEe4GGOXiPQ2c7+/z882iIjvAyIyXcJVftsYiPcIMJHyYIAAv25Mpyi6PsVc7BYBnD1Ycywp3XHuM1ecYy82MtrDEfY/48o9JUI3c2wLeUl3iKeJAyJ6HiNkb19iXlgR7ik2sB8kJgJNFk8IoP6QeKqAiNIXi8KbMgEqjlgl0ucBaafUUe1c8K0pirr9kO2NBmVevoK0ok6BkG5ucLWZ1AFfEEBxJ/t7QESAKkHWqhMnBMDKFvIJAS6zuc0TAsTHscnNHEEzrOc4BggQOsVevz14xRFFpTM4USZu+7M8xk0CdD8jgFsFGpKDfZLnJXP3DQJcr+CCk9E8/jpWQjRwcvNjYuL5Z1xgIv3zFaza2Mv3P8JWoU/yGv2XvI5H2X+LoGDmius/jdfq0/HXc7yTODk3lOe3eY6EUU8pNfjW7Uff3jhQ7rgh5TFxWCgpBNRnIJw0hSJAcHZeCTj5QYgvHsDlyl14Sfnu3O4fCCBTomwmPx/N9+7gyj1F3WP5vlbu2CNAeA5HxvvZTwub/Qi094iJ4xhrbtdzP1X9zRHRbF+exy7WUkNEtb/EXPdJvreIk5h7ee6HhOJkBMvkDokJ5oMc4xqmMdZwYk8Jwu1Wq/W7LH2WXE8Vjk/yvWt53P7cTxWBooREVwzhCj4BtXyRR4gVRGpdcd1+9O2NA2Ve9KyQ5laJMXGcipT308pRoNlDgOUQjvR6CIB6TIBtLxH1ybHtVh5jLX9uY4AdwpK260Ryq5uITg9zPFJZDNIejQ4W239GUBx9WP7Vh4sxjvNYG9hg527+/QSvqqGI8nqeyyMC5ORS9+eiHy2fdFq87st95Meha/OsuNa6Dk+JSWkaJxUhgLuPdu5alYbiw8fyvH+Xn6vAQ5PLCpasbdNuMj+C29fih+vVpOv2Q7U3EZTPuwn3KVaOVuY9PxvBtMQ4XlKoi4jwpBXuJQABbAgvtzQlt+YI4Ckr8jYw/7pHgLlkXn3Z3yqWbw3l+8e4eq/Kz5t4iSQt/QRem643jz+YfTwlwPQrAvBGiQmgrHpbISabM9MkzBOrcm6EiDw/xJH6vxKGRprEVPEnpcMzHG2Lb3+c4xRfXa5leAWg1Wo9y8j5NvaChqB0ZD/aRSgodP6kh8VQ/nlWqfcNKIq6SKRuP0h740D5HAtOURZr5MKdhfViWSYtja7UDr1YgrZPJJ0UbapwRNrdZm73KwI0ZYm5SQC2wOO/IYC/ifnoZzgafxeDreiQs1PDtMwqAU7d2JCnnwAjJcF28Aoiks7pfA5zbEfFNkd5zHUC0MAR5ygxwYjCOcjrKR/ju3jh0MPcXuexltsfYileM9/vyf32iKh5BSCd2x7QzgsvYrpoAD/xqHUm874pkNYKjLr9IO0nDcqXfMTUzSqFhKgMRVzbBEgc4gSZNL3L2cc4XolZlWonBDh8icFcPKfM6+9l/+pvAJu9yz9YBkTvEMAnEPgYe010EyB7hQDBdSyD28OUhKLkVbzatLjdIcIStJswEXqCVygZxMUok0RUfZr7KBk5gZdtgniKGMr+5XmxT4CleGGZKIlOIV/LJGgCJzmfaAkmODcJ17kydGf7VkG0TgLW7YdqP0lQ7nBoKy0Xz2tK9kltoCKPMSL6EmCM5HsC4o8IAPpXAqg+wksQ6XF/irCqXM/jSyVxA5c5D+DS5BPMITfyOJvYNOgAV+59lJ+d4vJnAaW45lGcpKtynKt5HHHNs1gJsYaj+N8SoC4AXScA+p3so5X7LBO0RRcxAYlnP81+p7PfP2Buew6XZQ/ghU8HgbViAj3NY23xDcG0BtG6vSntJwnK2CAIiqWY1JKTnMZWi13Yz3cELwU/SADxbVxOvUgAxCkBejMEx6ooe5IoIvkCJwdn89DiclVooqTgPqHFVSQsP+BBbKZ+kwAVAWoLr54hvleyuAmsiV7K48gfoj+31wQiDXYPjmIHs98NApBLekO0jPjbR4Qd6HXMb3fnNZFC5Xmeg54QdvNcBvCq3F/lOcjXWOqX5eI7qhNqdXvr208VlJVhHydpAVkq4oU+r+a2KssVcI8Qj+6nBI86Q0S2SwS4rOBS5hsEkHZh32MVKUzkthtYjtaf7y0SKoYJIpLuJ8BrmwDVTbyMlIogTjD/rLLhfZxQnMnXFV7tZJWQp5UFMBu40GMh+5BBUh9OvN3Occ9ha87VvAaPiOWm7uYYVTAzlNecHM98jkMa4NPimujJ5Iyu0JeXnP6VHIcmEemyX0pL1aqIur3p7ScJyslHLlE4utG+kGUz/27iKEycpiLisqCgiZ3g7uV2dwlQPsSrTe8SAKgJYBYb3twlNLX7BOiqcGMKc8pHWK0hDe1jDL7yDd7A/sSKWnewJlkl3Y/wKhvbeJWNHYKTVtSrir4hHLFeIaLtbQLoH+R2nxNR+yxODK5iw/kuAphVbi5HOPW/SwCz1C7Nc8BzN89fRSfdtCfuXqZ8qFURdXuj248GlDsjoEtGS9KmzhIAcUjc8LPEjd7A2tiSs7xOcLYP8cKZVwhAFqAuEqA8RFAP4ktFLxwTQKQ148BRqIyKpJ8dJwB7C0vu5Mw2S0wGu9i1bTU/f04oMnTco/xZJuRup9l3RawgvUvQKyM44r6Wv7/KY3+Kk5aigTaI/4W1/Lsv+/oq9xU/3JPXqYllZz1FX3eJCWGBYmHRC6oo9d2h10WBz8uSdrUqom5vdPvRgDIvRkCXjZYgQKQXeJ6AvoIf/1U6rWhZeuEdLOFS5DaGF+fUUk6SkB0SSb85bCL0KwI4DwmgnCJAU9zqMQFQ8hheJKrr5vKYRzmmSUJe9inWRZ9gQJWPxVc57h2cHDwhwHSJiJz/Oo+tUvEprKo4JCaB60TBy0ae32MiQp7EK3gs4bUEVXEoBcl0nksT88tDeXxNRNIMl99XWcoORaVdoVc+k7R1urjlZ187oVdTH3X7KbQfEyh3RkCvipb0KL2LizqmE5AVjWlZJjAgSNImudYQLqVuYIOfqwQoduEVQVQccUoA2FV8DRu4anCciMQfYZ9hrZXXhyV1u5hXHiF43k/yPf1UeEmiHbyc1H72t0WA8jABtgs5xkUC/CFAXa8B/irPeTWvg6rlZokJob845ipedupZjknFKt35W4nS+VartQGQK3jIuU1RcRkpq73s+/62qYqa+qjbj759J6B82YjknO3aLBe54MY5Z9mmFQIYwFymdMjydxAg9GAu+JAAuHdy/4oAoT9hKdtMHkfJvCEiQhRF8Ic85hbmcD/K36rI28br4n2Iiy/2cILvbvb5EU4uCjCPMGVQYbvNXUx39BOTwUGe0zYReassWVWCm0Ql3jg2TpJeWvzuUPbRwuvfDWPwfYBLnKdxRV9nE5Uj7r7zf+JV3/e3TVXU1EfdfvTtu4qULxuRnLvdS/hllSFD+w02RABKWaqsKjIBh0qapVlWdPg5XtFjGBv2KEpcyL8Xsp+buMjkAUEB/ANe/+0xNhJqYve4xxjcpLw4Jrjh+7jSbwH4bwlQ/JIAtgNc/VauIHJCROxP87xnCNC/k8eVX8Z4nvN9bK0pIJZqQtV8Wk7qKVadzOLy7m3aV4kWVXQeTywfC/HPrxWlftva41rLXLefQvuuQPmyEclF213EL4urBZuVC6ybBMh+RICZIuhZwoy+VWy/TADV3xB0wYPcbj4/2yOSfFX2KRmYSpq3MP3x7wmQHstxzBOgJfvJPgK0ngP/H+BviQTjBwT9Id30PQKQNwjw3ME8tyaIMWy0/0GOaZSIsrcI4KxyHD1EgvIrQjnxOPsexZaXvXiyUrEI2N1tM893FK+IvZl9z6XfhNpx57Ja+flwvlVHqXWr2yXadwLKl41IXrLdRTzjfsd7MspRZd57RJQo2kCJvB5sCP+cAM5fEsDWi20iWwTwifK4RoDTDF5zT4/7nxFlyyeYnlDE2MAG9QKuJzk2mRYdFp8dFOem6P0BweHewmZIz/GCoc+wblkm8tIuPy/GI8Ohldx3Gyfb+ojoWx4WuqYqnBnMa6sSZ2mSh/DafLr2Pem2V2qSFSFfyhjoHB/kOilXt7eu/ZgSfWftPH65MBY6u+mL5eC7MG8qbvc6ERHOY5/fawSQaK25d3B59RYRLX9ARLJ7BDjuE3TCDAGsf8Rl2scECG7iCjpFyU8JwFLl3tViHBME+G4QUf2jPOYwAWILOdaf5TlMEMUoMvHpyr51voNEtL1P8MUq+Z4kyprX83qpKEXFMbfznE+wZedMbiMLUP1s0s4Ra0IRSCupR7nmIa9HF3SqauqkXN3euvajBOWynedzUQC0VBdjOLKbJwDuKgFKTWzgc4MAsqvEjf5P2JntCQGE1/EadlvZ13N8rfazj36CtmjixUUPcRHIHhEtXyeA7xnwX4H/QID2+9mfSpHv5zGm83OVIsvQ/ohIKl4Bfk6A5hgRBTfz/E+ISaIHV/OVFMMQEa0L/J/gMm/RQPLSWEq3ts7otQRc8vvYz2umbb4umJ5HcdR0R93eqvajB2UcPSkhpURegwCwWQKIdjH/qkKNIwIU+4jIUMmoUdp55m7MfcqMZxovPHqfALARAtAFyo38/ZzgmE8JoBYHu4LpApVTb2CTJNllvpPnNI9NiI6K30fYkGgUR9tlNZ7OU5PMaB5jvKqq++nAtktMMrpO5N9gvl2qlemsmjyjiFLutgUvLKulJKC8lEWxvFY7J7KuI+S6vXXtRwvKHTc9tHvpqiT6lAAgRXdKQvVjYJX+VhTHVwR4fUhwtZ8Qj+yNfP8LApjv5PbSNMsnQxKxQawbrgiAbBDg+RUB3o3c9zleTUOl0/N4bUAZAY3k+Mfy85Pcf58A4p/l359ln1N4RWj5e5wBJ0HF6L35pIE2c78GBuDSv0Llz6o2bDN7KlqZfD2r3jvHz7r2sahb3V6j/WhAucM57DTfLv8uIzABgbwkBvP9JwRN0MBaXyWjRG9MZt/PCEDtIqgEyd+eEcDaSwDjDJFsu5nv/YUAuesEaK4TwPUuEVE+znFcz2MuZ9+/xNV5WsnkIMf3ABvhz+Z2+3jljV68QookcpoUxvGSUZvEBLWe1+P3WIWiaywOuZnb3crjbmYl3UaqJmbzGssoaLeDyiiTrwNcDKwvkz3qGG2f1a1ub3P70YAyThaJR32Ik0tn5bcd4A0BCsu5LbhiTEm4PgJQxc02sWub1A57eEmna4Q8TSXFd/FCpn35uVaRVkJtBntOKFL+XwjQ+Sq3Fy0hT40dIpI/xCtyTORx5FMhI6DTHMO13FcrXy/mNevO83qCfSuGiCRfCXaqNtzCi48+pKAbCuA9q4wsEquK9s8myvzsiIvby2SPZxH2S/avW93eqvadgfLXeDTVo7NWkBYI92Y/5TJOKrxQAUUT87m3CKB+CPwLEQWrMGI/t7mHE3IN7Ho2h03Zt4nE3DYBmifZd+mudpjj7SNA9iR/lCScynPrJsCskX0o0uzNbUVj3MCG8+K5jwiA/gSvBr2Y+6nqT0m2U2yURF6zcQyi5VOHCmoOiaTeSRG9tr3f8R2B19wbqaqqc5u2dhnZY01d1K1ubt9lpPzKqr5zKve2CXDaAU7zc5VNq+ABvGKF+GV5TgwToDlGgO8aBuNnRCR6C5dLi+uVSoLi7x0CnD4mgGojxzKRff4Be0rIcEiyN+mjJwm6ow/ribXUUouQpK0TkbY8J5SkmyBAuif7+IqQ6MkgSGXlSl4O5zXQ+BSZK+Gnp4/5vI7i3kX9yJyojwDcJl6JGzDAFt9bT+c2l211dV3d6nZ++y5B+TIVXFJRjGS57iwBaNLIlo+4TQI45wmwUeQ3RYCh1pDbJABqFlf/SeUwSESW/yHfU4HIf4ctKI/zsyeE6uI6kWD7ggB5mcN/ShSrzOLIV9ywDIIUDZ8QE8UjIsp9Tkwaomfk4PYoX2/m8VfzHFbyve58j/x8tNh3Pd+XjljLWknmNkysAF2u5A1WnYD5+iYuUX+hFX7WQxdtU7e61e3rtR/UkAiDQB8BdippXiYiUBnG7+bnjdxPa8SBS5WbBCj+CS9ZP0QAlLjUOQLEPicUDEOE5neNAOKv8GKin+J16O7hUun5/JkkrDvlZ9yXY9jC5eB7RDSqSHqUmASOiKhZUflVAngVzQ/m+8vYDlNmSj/PsWziFUO2CIpjCa93d4oBWn7IVFXVXRg6QSFx6wTbmlaoW92+//a9GBJdBNIFCMzmW11EJDiBlyn6mKANxB3PE9HrIRHl6fH5PuZmj3M7rdixnf2pAGUK+1uIArmP15yTe1xZdiwXtGdEJN+bv1fyeHdynH/M/QcIsFYUeyPP82e5/SEB5DIKOsEUibjt1XxvkvYqurkcl7TPp3ktwWC8SXsVnp4sVHEnv5Dy862yerKqqsusEg41DVG3un1r7fsyJLrwBu6IziSvUqWeOEsVX+wSj/3yKF7HK0vfzs9EicgyU45x4wQQDxIA+rc5liYBfJKT9WQ/SiI2cATclftfzz7GcZn1IsFX/4aIwk+ISWEGA6pKkVtEEvJansM1vMyTzJGGss9l7F63mceTM5t8jgXW4pSVqCyr+UqpYQMb2cOLxR6XAdzL0FN1q1vdXrN9X4ZEZ5rWzpUkOrcvFkCV1rf0e5BkTlVu4n9lLiTVRYOIhh/haHUYryxd5TbPcptWvvco+9nM4+wSkfZQDrUHa4yv4lWm9wmQVQn2FQIQV7Gk7ykBrEN4uaQ9ApCfY/78M2xzuZL9i64Zwi51UlpsYTkgOFl4Ba92XVIZ4GWchv7/7Z3Zc1tpcuV/F1yKuyiK1FKLa5l2udtbuNsPE+OYmP9+XsZ+sD0uu6K7qqvVKpVEiRIpLiBFUoAfMg/yw+XFRlISlzwRDJDA3QCFzk2c7+RJTfmgHyMJNxfqEon3g2lpiZdxsGEyBSZjyOcKtf/QDRkX8xhxyvYlr/Ar7Os+GAF+hZHcW8JV8Kn/vk3kCatS3sII+msiG0N5F99iZK6v/lMYUcvXrKD6Q2LkUtuPt4xJLWv+PnYx7VpZxdPF+/i1H0sLcLN+fRvYDeTf/DPQe/yW0Ke1IPnEz1F+1vvYTUn76ptGaWUTOQ9shU7CTSQ+Hs5taRqA3tde1yVFDkp2U+ZDU+tuPePiqT8/iy203fXndtQQUVXV7zDnxEsiKF4OhVmM5OYwMpvCiG3f/xYRzmMVrwJ9NjDZQI0jZav3HmFhaxOt32uYFnzi22r6x3NM235A5Fsoq1je6C2/fnX+bQMUY5U+wypfNZ6om3GNsz5iiKndssS1a1a2M4FCiUTi6mCay9UEy6+9ZZxjByO0OSK/op5AJpJTPsQs0UjxiJgNN11V1T3fTy3AL4gozV3fb43o5HuKkeADLAT/CCPDd8TU6//CtOUutpB2x4+7SwTAv8PI9ms/13cYycopobyIY4I48ccZjLhP/T2p3foN1uJ8UlXVqV/jKdbuPEVY7ZTaJicK/hns1b5lzPpx2x5C1MMEi3iJROIjYfoy/2PWKjLJDuXX5N6jb/MQI9tn3W73jevJy5icoNyF/8AIUQ0YX/k2+qovf/OXxd+rRJv1U6zCPCAChXYwaeEUI0yFAb3E5I4Hvu+hv/7Oj6Mw+rf+9yuMlOVmUHbyNuFJVhfgEnZjOiXIXQ0ce1VVPffPpgWsVFWl3GPJFa2qqh4RmRiLwHxVVT/5Z7NCdBmqRbyp/TldE4nEFcaFFvqG+JEXiPHxfR1hRRayZAmAl1VV3fV9NLxTXt424U9e9ud3MYvZhj+/SmRR/JFIhzv055/5uWRFWyCkiyX/W23XK8T0jmmMPNVd95iosA+xm8oDjOCf+++KsFQI/e/9GlQ1z2GEukK0St8hFuH2/H2u++unRAv5CnbjUNW9RswKVLdjL7OCZqRrIpG4wrio+6LsyCv1zWH/8VWpLRLdZF8R8/CU4/AaIxxpw9P+uhb0dglyUoTkDLbYtkmE0N8jpIJ3WGfeI4wERfpbRKjQMkawL/24PwC/xbr3jv3vleJ9vMBI/wC7IfyMVcqK0/yRWOCbJ4h1F6t613xf6J/qUeZUqGI+LD7Tx36dTxqme0uiOJPglot4icTVxkVJWYt5kywYSjs+8ke1Q2tRbAcjzROM2H5LZCcfEM0l08RcuS4RcXngj9/48SvC66vENS2cLWKhQ/jxlLg2RWjPPxAOiBnsBiKC3ybcG3OYpLGPVeVfEla1RULb3seq8Lv+mZ34+ytvYJoUrW8i+PFVTe8Wvy+4Fl3X83WjUgU9sIlnHGT2cSLxYXAhUh6SgVC6MI6IfAi1C2ubPYww5zBSXfOfE2IBTvkWXayyXcF8yRVG0EpJ+w1G7r/1599iFfP/IxYA5evVV/8vMGLdwqrYHf/9M78+SSHldch29iescv7Gr0lVuBYtn/rx9PnICXJAfO6viIpd6XSqdveKz1Gt0rK07fpn37MYln5jl4ggprS0ClI9r56cWnQi8QEwkpRHVUgDvg6LFI6xivMu5jLQNGj5ZJexqvBpVVVfAL8jAn0+I0J9fk8Euf8DVrXKZVEGF7WwCrWF6azPMSJRK7W0aNngDv35LjFX7xURm7njx/7Mt9nEyFga7iPfb4to9Ci1YMV66tjqtJPtb9qPqYVC2e9W/GbWF29ZWtr8+UaLYUMzzgrNC66TILXoROIDYJxKeewKqUbge+4WmMcqX7UJl4tQy8BqVVVLxOLeIkZwO1hl+hz7uq/8if/tx/gBq5K1MKb8CjV6zGA6sI47RxBm5cd/7Y9Pi/d2hFW8kiTuEVM6XvrvL4H/iVXbR1hFrckhd7BqeJu4Gai9uWw73ypeXyBGVn2Ck2i3232Gyw5eFdf93X0WQ5rRR+ycs8pNLTqR+DAYh5QnqZDqBL6FEeY0cOq+2RPofcU+Jb7WP8bI8VOsYta0jimsuv0Pf34WC/35iRjvdIAR5Q++/Qam/Sry8wWWrvYJlv6m7IgDInh+Hvhn3/cZVsH+jpjq8Zhwa9zFKmY5RdaJ4a0iYFXsEBkT9c+oTTg4johhry+Jyrvcp08jJtuhE4kbh5GkXHqPm3Iraqj7kOcwgtnAdM1yf1V3qiQVILSDLfD9JUbKG5j2+1dE0P0mRlS/wYj2CCPYMkO54+fWIuEpRp6aHCKpYhWrbleJzkGImE1py299+2nCO/zU38cuRqLKedaioSaPlCglh4Xiet/44wbm2y4r31Ku6H3TSMJNJG4eJlnoa5QxGjRnaZlahNon2oPrVd4SRjJrRJX5EquCIRYGlbWsxa59Qqde8/dRYZWssoi7WIVdYa6LP2LEKQ+12q2PiHjQZ1iFvoGRtn6+JyZa3/cfpaz9iC+86b35ZyI5o0sEFYlU1RgCoSmXNritQZ8rw+fhJRKJa45JSLleBctxcYasi44+eW4V+n6AVcwzGDltFdegMKGvsSr0F4yA5jEHRTky6XN/7XOM/JRrsUEksv2K0JD/5I9PMalix8/1LVb9fu/X8BNG9qt+/n8hxlPJU1xhhCx9t4PZ0o799S1vh35Of3TmHP16eumkEOG+8/dT3tR6n2sikbj5GJuUa1WwciQ2CeIpybpu3YL+SSHCM2whbx6rJGeJcPvfE9GY8g5X9Ddh6NwiyS5Gem+xKnYKq3CnsKpaORIz2ELet5hWPO3HfIVlYPyTv9d3xTXcI2bnPfFr1/lXimtqVVWl9DaFCsk1IekC4ptBdt4lEokezutTbmEuiVbxt8imHEEkQpEFbhqrZksblwaUrhHh9kpZU56xnpPcoazhI9/nEUag/xerkE+wG8Z/EjnEx/68Xn9NdOC9xSrpTczCtwr8H4x8DzFCPsFuCk+JhbhZom27HEi66tdcVrgt7IZz34+pOYR9qDtY6q8nEombjYlI2QljyX/K4HWlwZUBRPpaX6a/nRIZE7KbvcIIr4XJEYrXfOLbPcBkiMf+HET1uuTHlRyiEPq7/riJkfW3xJTph/7aFkakxxi5b2OEPVOcQxX2K2xR8S12k7iHySjyI09jlbe6G7fpr3BXMLI/Iax9d7DK+02tRT2bNBKJW4xJK2URcIuQAxYIMoZYxNKUDPmEf+3PVYSPV/rsDkZ481gF/sCPfer73MUq2iOsCt0mwoM6mBVO5L5M+IelBx/6tbUxEhbxz/vz6hSc8d9ljdvx83zh5xXJTxFTtrewm8asX6uscfXPTc0qysE49dfqLeopWyQStxiTknIbIyaIBbwHwKZHb0o71dd4Ed0+RpLKjPgBI6VyUKmiNvFjfOrHVgDRbzDNWIlur/xY0mrVpq2bw33gHzEZ5c/YTURjm6aIJo1VP/9zYvHx0M976ufew6pqtW8rglOLei8Ioj31z0XddG1M314k5vCVWRV9Leppc0skbjcmImUnDPlp8czfUluGIOQOtli3ihHmHqb9KqpS594h/Mi7GEFq4exLrCpWVX3Xn5fPeYaY+KxOumdYNfolVjVLv9bIpjms8p3ByHKLiMdU5b/u16oZfvewBcJpP48+g7KTTk6TNmF76+VSVFW1id1kOjWtOAk4kUj0cNGUOCW3qTpVTsRnGKHteqswVVVtEXPoZjCSPSIW/5aJCM2/8Nc2MZJ+TER6LhKLfrtE4I+q8ju+z58IG94aRuiP/ToVvfkzMW/vvr+25fvs+qP8zG8wzVkJbR36g37kNjkhpqqU7op9hrstxkKmtSUSNxvnIuWaT/kZ/TroKbGg1SoGs65hC3lTRJ7FXYIU17Hq9hQjw++wKnvFjzdLBAkd+P67ftwv/dg7vv8v/vtdrGrVAtwmES6vfI1DP7605h2M6L8gdGJVuWViW7kgB1El4z7sdUzeuOwc41wITCRuMM5bKfeIoWGyyGOMkLd9mxX3KashpINJAV/6zw8Y0U5jRLiLBQJBZB5Lhz3AiPk+Vr3+G0HE+4RP+QiTH1T9rvv520Rn3SZ2Q1F1v+w/b4nJ03/j5+tgzo8WsSioDjx1Ku5AX9OHHCnq7BsbI6rhXAhMJG4wWqM3MSj7ohjmuYs3jOh5f00z77TotYEt0v0KI8RPfJsVYtSSBoh+h1Wpx8Sw0u8wSULjlP7sr69iWcbHWKuzcoyPiuP/iGnOW1h1vuXbl/pvC6uUpU2re08xmp8QoUpvMAL/isg/1gJf2d2obxCvi89sEug4C/UXut3uu263u5fSRSJxMzENwyuzhi69ckwRWDVaVtyyion0polcYsVMqhKdxbTnLzDiO/Tf72Ayx8/EiKZDognkBRGWr8YRDTVVOH4Hq1YfYgT3lP7cZYpjzxADUBUvquAjCPfINKZLl9NT5P6g+Eza3W53+wKt0o3VcOrJicTNh8h0mE7ZNP1ijZj4LKdFCyORHYqJF0QnnwLhRbBvieyLhxgZP8Eq5D2sKu0QAfTbvp08wnJiiGQfYYT5gAiYl83uBUbwvxDB+fIur/sxZv1cx/67RjkpJF+NMjvF8wvErMFTd1m0sZmFcE6pYYj+nHpyInHDIVIeRh5N0y82iPjLHaKK7jgxlQlxmgyyiJFjl/DrSgp5QuRfyBqnyM/fEp1z/4kR799hNrV3RLvz58T8vR1Mt/4rjIxnsBuFKuz7/vg5Jkf8SEwb+YJwX0iSmCUClsrPqG86iD+WHY7PLrlVOvXkROKGYxqGOwPqrxWLeZqsrK/yC8DRgIS4rzDCkw9ZvmJpzqq25zEN9yGmQ39KWNwUram2Zt1QtK/aoZUp8T8wHXsLkyFmsXbrn4l5fxrTpMkj81hFfkTchF749Wh0VS+i0x97vm1H2WBzqeSZjSWJxM3H2O6Lmp554kloanOWViuddxWrTkVKm0RVuUo0dChDQo0df8CI9y5WzWq7177fZ5hM8beEi+Khn/8ORrSSWJQ418FIVw0nGqvUwSrnN1hlvYhVyGp/Bno3oTYxrqn+efSC530Rrq/BJpFIJCbBRULuRbjqciufU4jQIpZVLO1ZbdDKf1jDCO25H6OFEfAx4cjQSKklzKL2zo/9HMtZ3sWqaiXNvfXHGazqfUWkz636/iLiTeymsEXILJTvsyBfBTDVP496eH8ikUicG5OQ8jH29X4L+sZE3SEmZ4CR1RMie1he4RZBkC/8+c99uy4xCLVDBNi/wYh9nQgvOsQkCNnOdvz3/0V/xrKmZ/9IhCcpH0OhQh2/DmnIkmHawLS/N117PWpTNyCF2x/V3RHplkgkEpNiElKW93eN/oaIsn1Y1eMu1ub8NZGN8Q4j1UXfpoUFyqtBQzPuHmBasqx1J77va9+u5cc/whblRPrzWCX8yl/fxsh2yrc7JboPj7GKGsKXLKfILHYTOPF9XhLhQ+9qsgX0T5SG/m8Tfd8ukqQTicQoTELKmgB9VLRO1yeSlENBOxgJzhILcQoG+hoj3z2MvNcx8rxHyB5/ICxuEJJGC2sgAdOM17GKfBEj5J/9fT3zH4UgKWjoxI87S3QJtgiL3zqRXqeAfZHuCWdli3qgP5x1SZTOjLS0JRKJgRiblGuLe6c0D09VQtw6RuJyZ4CR2ClGziv4hGtiAshesd1XRLvzA3/uFbZgpxCkZYzId/xHLdYn/lMuOior4wQj/nt+7G8wUl0kmlNOiNzjBaKh5MitfqqQ+xb4io+qz6lCP/mmpS2RSAzFefKUe48FGc9iyW5/xkjsLrFw9wbTkCVxqDtuk5A2ZEdbwuSIFaya/gUj4nKbRSIsf8+PJ834S4L8wYj1BSFp3CcaXWYxWeTEj1O6MuQWuYfdNKb9uBt4drQf/0Rt5owhSaSlLZFIjMJ58pRLUtHX8WWMsLYI8lOQfIf+ic0A2151f+r7zWNSxCeYbCGr2l3f/9SPqwGpf0E4Hu5gFetPGEHrZvAJRrwHxBy9ZYyg1ek3hy0EPvRzLWFV+z5xc4CYitKCMyl5+gxaCrVPvTiRSJwXF81TVuV8hJGWGkb+SC34vtShndTuYwSq1uU9IuD+D1jzxyJWKe8Qw1o1yqnlP5/S34Syhy3y3fXnZ4lmkw2M7KeJoCIFDWl0lKr3Lb92OTY0IUXWORG2dHR1NUJWw4lE4py4ECkXtrgpYgCpiGnX3Qpque4U2z4kOvraRALcLEamFdEFqHAjDWzdw/TjJ5i8sINJEKt+np+JfOY1Ypafxj3Ji/zW99vFtOXnfvxVTAb5qQjoV5B+u2gm0U1BjTMLfp1H48oZ6cZIJBJ1XLRSBvrIeZlwS3TobygpHQgay/QS02+lJU8TtraXGPl+TrRS3ydyLtaxilzdeqtYVauGE83228BI+RcsO+MYI/5V7MawiEkdC8C/Y24NuSz2yvdXvl+XKuSLVut3x9/XuA6LdGMkEok+XAopFziT+1CzzCnhTQltyiJ+jhHaW4xs72PE+r1vu4lVzkv05y1XGNEuYPa3OeCFO0X2scXCbawaftztdt/6dbzGiF2VeEX/DaH0IQ97r3qUpNFkixv3GIlEIkHV7XYvfpAhnWy+yVKxuWb4yeGwjVWzi5hneQ6rYNd9+32McI+Bv8T0ZkkSel1ui3I80x0sgGgLm1Ai4pSVbRb4HVZl/0JU9Ru+/2UnvCUSicRIXLhSLhbtFJh/hGmyJ8VmkjRURa9gZHyMEecDYrr0jm+j2XprGFk+Bf4/QfSPgL/HquznxKgoeaAXiHxk3RSW/HUNX5UVTtpym8i3KH3JTX7kRCKRuHRchnyxRH8g0X1MBtihPyVOjSWqViV1vMQIepFos9bUjyOsYq5nOt/BWqcXMDIWuZbTQPQV4F3xPnf992ViCOsJJl/oHJokovD7UzJwKJFIfCBclqbcwbOGq6oqrWSSMOT7fYRVqkd4cL2H4u9jJKvAerkaFMnZC5qvqkokuenn/Z6oqsuJJ8q9mCccHBAOjhnshnAAPC+cIqvYwp8mXG/58VP3TSQS7x0XIuViIOgmTnrdbvcEeFabT6dzvcIqWAUKiegUdnTQ7XafeSW87Md8gkkNj4i8ik3f9y2mTyuY6DF2M5jFmkIe+XlF1nOYXPIDVpn3xmH5jaHt1zGL3TReuGTRk2LSxpZIJN4nLlopL2CV524DQTU5C5TEdkoQHkSjxlaxrdqdTzHSVl6FWpw1+WQaq3afYh7lPUJyaGOV8gKmMysuVPvewQh4kWgH38duCGdQ189JOSORSFwyLquj78xX+7q3VwNFsSp5v3BpqBvuiKhYFQeqRbZ9jHSP6Xde7GCkWvlxlUinOM7S/bFETNF+QiTEtYkJ25JbTou/SzuffNLHOvagCSRNH1ZW2YlEYhQupaNvzM37qupaq/U8Rqxd4I8e+FMfwPoM8x2vYIt3j7G8CxGnyBRivJSCiiDcFW8wiWOJaA1X+JAGq2p+X0m8JSGXVf4kE0iyWSSRSAzFZTePDEO9ql4iAod+JmxsrSH7vPbHFWLxTwNXy+r6FRZadOQ/p0SGsvRlJb8ps2INq5xf+PZbAH5jKEdevahVuWX+xxzDrXTZLJJIJIbig5FyQ2ffEuFqUItyB5MwdoshpNpHEsYm0aZ9TOQmL8TZmMWcFzruLLYY+Ni3e0B0FS4RJFlmWaxjxLpBzOdr+/X1iLb2beGkqO7lh97EdfCM7kwkEqPwISvlEksYsb4krGpHxfP7wJsGvbaFyQz482tEVnOvMsUq3fsYIYoc14mEOYjKetm3k64M/Zqytt3x868CS1VV1StmQe/j2M+bSCQSY+NjkTLERA8F++xi5LdOSBilXjtNZBrLX3xUbNtRW3RVVatYpfwrIry+hUkQW5g+rSYTLSzuEp1/iuvcKbbp+OsdaouANejmUc4ETCQSibHwsUi5HLYqyJ1xQLQ6l3rtOpFpLKfFEpE6d+DB+fvEPEHZ3cCaRdaBbfdCS2bQgp5kEB1TVbGkDF1f07WX6Os+HPPzSCQSCeCSAokuC8MsYw3TPlaJSSRfYe4NuTSUv/GOsK9NYwuLj4kYUGUiz2CEv4+Rs9wZDwhXyCZG8lveIHPu95JIJBKD8DHlizMYthBWW/Sruxg06aSFVb9r2ESSFxjBKiHugKiwHxDNKfij5vfNYU0m3/g+L4lKWlOtRxFv2t8SicTE+KCk/D6qRz/OGz/+I4xsj7Aq+RCrqDewhhGNkXpNdPypOi4DiVqYRPJnzF73pmE7GE68Pell3EkkiUQi8aEr5cuqHvuOU5C9fMynWKjQPjFl5MD/1n5auFMoUimPTGMLhX8iMjPk2mhVVaXtxvEd96ZgEy3iiUQi0YgPTcoTN08MqK6bRkytYN2CCjQ6IJpGDrHq+ZhwT/TiRou5gcuYJr2EyR8axKrFPskji8CmOg+brpX+G0cLs9Htl9Vy6s6JRKKOD0rK52yeOFNdNxznjFSA29G8pXvXjyG72hz9kINjvjieQo3KTkFdS4tmlFp1OXEbojGlnqWR4UaJRKKHK7XQNwAjq+va4NYVf66JtI+xRcDXRMUsb7LymSVTfFfsW3YNqkuwVVXVVG38VY+si+GqpY2uvGnoWL2MjUQikbjypDxhdd1I4AVpK6e5jTkzRKTyK28RcoIWD0X0amCZIqZkn7oTRBXvPs0TvFWxlxnT6WdOJBJncOVJeRjqmuwEBK4QIoh8ixb93YR7xetLRHi+ZAw4W/GCdxD6hJTeRGy/Vskh7e7ZLJDUlhOJxPUmZSZ3c0hGaBHDXPcw3/EMNoB1ln6ZQTr0bCGJ9FwUhWf6CFssXCLCjj7BmlLKoKMdEW9N9tBNIrXlROIW47qT8kRujkLGmCqebmMVMkTAUUn2OvZpVVW/Ap50u9235TELCWMZ6/6Tp1kZGNCsH+s8yt7oex9ZQScStw9Xqs36Y6HmhNgtXtovqtpfA/8A/Gu32/3en1OexjEmgcgL3Yv5pAhMKo9XnHcg6RYa9G5t4bKMP+27zjHeZ5J8InGFMcjadW1QVdVUVVXLtep3IjhBbRE2uCUsda4krsPiR1jHhrPeI1LvToms6A5G1hsNxysxXVXVIyf5Em0aKmjHEtYG/oj+LOlhUGU+7vaJROID47rLF3B5XYKSG0SudSL8BauItxo6CLUI2CbcHHJjvCQyoYG+inUaI2x8n8Wqqn4iFh13dCwF/9eu6ZB+t8co5OSTROKK49rLF5f1lXyS4wySFWpzBzsYIW9g5PuUCEZSNS7y/dn3OcEIfgWbR3iAdQ8eAD80nCuliETihuHaV8qXNWLpIn7omotCrdn7GPE+xMKRnhHDV0+Jjr95rALXEFhlbxxgZK0KfJD3eqaqqvuMGSmaSCSuNq59pXwVUJu63SGaRWYwIm7786v+s4NVxFoMbI9aABzy3Nd+zKeYc+TM4l9W1YnE9cG1r5SvCAZ159X16QWMkI+Lbc9U5wOeb9LOFzDJY5docpH/ulPbLrOdE4lrgKyUh6CW+gZjVK+1/esVdG+4a0NlLI15kHWuVwH7Y7m9/u7Fi5bHGfU+EonE1UFWysNRpr5pwCuMX4GKBOXIqAcllef5hhhp1fGGlDIGdInwUJeLiZv+3D5BwroZdIC9Wkt3mb+RVXMiccWQpDw+muxkQy1mtQ7CYcNWwextB4TcoTmES5iHGqzS1mKhBsyqhXsfy2wedV1pi0skrjCSlIejb+GOWmV5Wc4PP89T+qWRNlbR3vHn33jKncL55e6AIOdHGJH/V7fb3W460SVecyKReA9IUh6CixJYU+BQKUuIgAcRflVV+5hPuYQyn8twJWnIp9i/6QLQSMqJROJqIxf63iMGLPSt42lxDLDEFfv3LSQOsMUpf0MSh37vDDt2IpG4mshK+f2iKeS+TItrGgBb9xn3KugBGcyqlOd8EfGZv36HWKQcObB1HC9z+p0TifePJOX3iCGzBEXSTQNg5TPGx0kNIsChsZ8YUS8yfujUGSdJAwmn3zmReM9IUv6AGFb5OtqExQ3Gs9vJ+1xHh3BojAM1nxwVz9VJ+FzOjaywE4nxkaR8heCEpdmAQ210DcNiW7XKuo2Rcm/Aq/YdQJKa6N0G3tTHV13wrWWFnUiMiSTlK4oJnB+KC1WHn8hZ8sUipmGXxxqHJHsNKzXiPg+5pjc6kRgTScrXDE3DYgsS1uipVSI6tFdtF/tKoihJspyYotdE8lNF9V3fbyTSG51IjI8k5euHpmq1acFwGjhVW3dt5NWOb7tQVVXjJPCC7Fd9uxeXRa6pMScSg5GkfP1wplqtk2VVVRr+Wh/SOk00nCwxYIJ2raI+xdq67xfEfFGkxpxIDEA2j9wSNHQX1lvIy23LphcIvXqHhoaXSSvfrJQTicHISvkGo4H8+sKRhhBimW7XR+AMznUeu/JNjTmRGIwk5ZuNHlnWMjfOEOIAAv8EmzG41e123xbHgQnS8hKJxPhIUr7Z6DkoGK0haxGwfH0NI/W1Uqeuk/qgyjdlikRiciQp3xA0EWDhoBjWjg2FW6P2+lbxOLZE0ZSON2qfRCJhSFK+ORhEmmfmBzYQeH069x3/e7/b7SrgqFM7Xh9qI6dG5XIkEokBSFK+OWjUdccZwtowLqo3fHWUFt1wTAUg9cZTneO9JBK3FmmJu4UYpvU2DGntzSnsdrtvmvav7dPCFgd72ycSifGRlfItxDBLWhmKBFBVlXThw6qqVPnWpZL6YNc+pI85kRgfScq3DOMSXrEdQBcLNlqgOcKzjBFdwOJH1XgCk3fwZcdf4tYiSfn2odG7XLxWBtqv+vOvseaRY9ec+/TlWoxoPVkOalnNY9wY0vecuLVIUr59KAmvrEjhbKD9EjY9ex7LZl4jFvIGBe/Xk+XAQvhbWLBRmb3ReJzs+EvcZiQp324M7M7zBbwXRJWrCdpzDKhga77oDmdT7FqMaZUbMK8wkbjxSFK+fehVxy5BlBXpmdl8WENJB4sBPQFORhy/py8XUofmEfbIfQySLecVlgSfC4GJG40k5duHcfTaUtYYun1T6D79Y6qg5tBoItIBDS2aV1g/dy4EJm4skpSvGN53FTimXlvvAhynaQQGdBL6Y9NgVqA5e6NuzRt0fUOuK5G4lkhSvnr46FVgGfMpCcJfatJ4x+0k7BvMWjvloOyNodc33rtJJK4XkpSvHj5YFThGVV53Z/RpvJdY1Z/J55gEVVXNAOtYxOgozTuRuNJIUr5ieJ9VYAOJjqrK6zeIusZ7Zv8hRF0fzNrDJbzndeCR//7sAsdJJD46kpRvF+okOrQqbyDLuuzQtH8j0ddCjy5bN9+qPSYS1xYZSHSDMIrsPoSVrElKaAgwkjNjd0TyXCJx65CV8s3CUDlilExwSaSt7r05wtM8tEJP33EiEUhSvlm46CLhUFIfENlZJ9ORM/wabg69eFAG2+AGXscY7yuRuDZIUr5BGFYJj0lkA0l9wBy/M2TadA3vYfGy8eaRZJ24CUhSvj0Y6X8eQZ4LwCwwQ0MDyAUx0JkxAINuHh/d451IXBRJyrcHF5U2lF3RIfTiScm0EZNW0kO2z06/xLVHui8SZzBIBriIPJDSQiIxHlqjN0lcd6hd2olxHEgGWCif9MChvXOSauMxE4lEP1K+uB2YVGttjN+84DV8cGkhq/PEdURWyrcDbUaEypdQRYxpx5dZ3U4DD73B5NyYoPLP6jxx7ZCV8i3ABSxpl1ndLgF/DUxhi4MXyagYt/LPhb/EtUOScmIgLuIvro9z8sdtLJ5zq2HbSWSGscg2Iz4T1xFJyolLwYAEujLqcx94QjPxTqR5J9kmbjKSlBOXhaZ8i17U5wgiHTiVJJG4bUhSTpwLA2bqocemcU5DZIqmEKNR+4x7XYnEtUKScuK86KuMx5QUxp3nN84+fSjIuEVo2e87ES+RuHQkKSfOi/M4G8ad5zfReWphSbv+0y6I9wirwksCzpyMxJVEtlknrj28wWUVc3a8EPEWYfodrILuhepnpZy4qshKOfHeMWYO80UwaPBqrzMRr5T1Qjo4ElcVWSkn3jvq45/KvzGibCLsJskhkbjx+G9JuzsYW9DFUwAAAABJRU5ErkJggg==" id="imageb2087f0fec" transform="scale(1 -1) translate(0 -274.32)" x="48.24" y="-12.24" width="257.04" height="274.32"/> - - + @@ -119,7 +119,7 @@ z - + @@ -159,7 +159,7 @@ z - + @@ -204,7 +204,7 @@ z - + @@ -385,12 +385,12 @@ z - - + @@ -404,7 +404,7 @@ L -3.5 0 - + @@ -442,7 +442,7 @@ z - + @@ -456,7 +456,7 @@ z - + @@ -470,7 +470,7 @@ z - + @@ -549,7 +549,7 @@ L 166.049838 7.30751 L 170.083381 -0.512448 L 170.317235 -1 L 170.317235 -1 -" clip-path="url(#p6ea8896058)" style="fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pa82334ad97)" style="fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: square"/> - - - - - - - + + + + + + @@ -1227,12 +1227,12 @@ z " style="fill: #ffffff"/> +iVBORw0KGgoAAAANSUhEUgAAAWUAAAF7CAYAAAAKWZpQAAA0gklEQVR4nO2dS49c5dW2H0ggHBzHnMzJgA/YtDpgg8LB6SDldWSRHoWJE8EIJvklyQ9gTISCRzBgAlJIDyxQJITAWAEby7JjMBgbcIzNMQcDObyDb/BRa1399qKq2v1013XNamnXrurqdvne977XWhf897//bSJLwaeffpr++NasWXNB5bjK80SWIxcu9RsQEZH/zwUq5aWlqhbl/6b6OR4+fDgdNzU1NdTnvRS/O/9eVj4qZRGRjlApy5JBqu/UqVPpuHEqWTr/ddddl2qvvPJKqq1evXrg8QcffJCO2blzZ+m90fm3b9+eaocOHSqdLzI9PT2296ESP7+olEVEOkKlLEvGONMXpCivvPLKVHv33XdL7y2q4tZa279//8Dja665pnSujz76KNW2bduWai+99FKqXXzxxQOP161bl475+9//nmr/+Mc/Uu2yyy5Ltb/+9a+ptnHjxoHHVfVPVJQ+qfrq/QC6yiGWk9pXKYuIdIRKWZYlUT1XlTL50xUl3lr2X9955510DKnnVatWLXiu1thT/sMf/jDw+KqrrkrH3H777al28ODBVLv22mtT7f3330+1G2+8ceAx/Uykzi+//PKhjqP3T9DvjtTzxx9/nJ47MzMz8NxRrtIWW3X7pSwrllFu9O3ZsyfV4pfrgQMH0jHf//73U42+1MjSoC/If/7znwOPb7rppnQM8dVXX5Vq0R5pLVsf3/3ud9MxP/vZz1Lt+eefL723O++8c+Ax/ae1fv36VKPfE31Bvvzyywt+qcUv6db6iRtqX4iIdIRKWbqHlA8pnUhV+dD56ebTU089NfB4w4YN6ZjDhw+n2tTUVKqRfUHES/tjx46lY+hm3RVXXJFq586dS7Wvv/461eLPTrYEvQ+ClHh8b3RTcseOHan26quvptrmzZtT7ejRo6l23333DTyu3iAcZ0SToL9RlbKISEeolGXJWOybLfQ8UqhV/zJCvjNRvSlGKjv6rX/729/SMaRGz549W3pvl156aapFD5nOP6w/3Vpra9asWfB9kdKv3kgk9Rxv+tLNwGo0b5x/j/Q8lbKISEfk26oi54nqne1xjvPcvn17KZFR8Z5J2VI6gjxfSmmQ93zy5MmBx5RU+PTTT1PtnnvuSbVqk0lssLnooovSMeRF089EDSvf+973Bh5/+eWX6RhSxTfccEOqUeyRvOdHHnlk4PdZSWjMB8Uvp6enxzZeVqUsItIResoyMhWvbJQM6GLnR6sNCFGVDTvIqLXWPv/881Sr5J7JKyb1fObMmVSLTSGtseqLap+aTqhxhhT7bbfdlmrxyuGBBx5Ix1CCouopV9Ic9Lujz4J+T7Ozs4uacVYpi4h0hJ6yjExFEYyibBe7q6raeh1VMA03IlVMvieN/aT0whdffBHfazqGugPpfVBnIbVtv/XWWwOPKWlx4sSJVCM/vTIAKg56am201u4KdB+Bsu9zc3NDWwnxb6h6b0SlLCLSEXrKsiIYt+9cSXeQ2iKq40IpgxwHC/3rX/8qnYv84yNHjqQa+dHxfUS13hpnjSl9EWd3tJZz4ZTQeP3111PtrrvuSjVKttDn/Ytf/CLVKtCQKKKiglXKIiLLEJWySJHdu3cP/GOhzjHyRykxsWvXrlSjcZvRLybVSp4vKUhSpOQNk88c+fe//51qlPgg9RxrdC56D6TOqfOvkr6opGtaY9VdXds17LhQlbKISEeolEWAyuQ48pRJgVHmlpTs/fffn2qVFVS0Roq63954441Uo9kX0bemaXgEzV2myXQffvjhwGNKbdAVAaliUudXX311qsXXoKscyiRTioVmZFSUchWVsohIR6iUZeKpbiiJ/iJ1dlGutTqFjqbODespU+aZstHf+c53Ui2qePKiCVLKNNciKtnTp0+nYygV8oMf/CDVKGVCn1H0mamLkBQwdWjSVU6crdGa6QsRkRWBSlmkSFQ11a0Uv/3tb9M/MkoXkF8cJ9GRAh5lNkUl+UDKk17zz3/+c6pRx130d48fP56OufDCrBfjdLnW+PMgbz5+jlUvmnYRDjsPo7ofUqUsItIRKmWZeKr5UZomF6lOH6vsAGwtq2fKMlM6gvLHxCeffJJq0aOuesrkH1O2OCp2eg+UBaa8NyU3KKdMaj+ydevWVKMuy7g3sUp1t59KWUSkI1TKMvEMOzeDlDN1gFH6grZjkMKLKpXu/NPzSFWSj02zNN5///2Bx+Tvkv8an9caq+y4tYSSFvQ8ev/k71IKJHrg1ex1VSlXdv5Vr75UyiIiHaFSlpFZ7M0gi82wnnJl43Vr9Wly1XkMkbm5uVSjdAFB6jZ2+dH8CvJoKW9MP1NU2dWOvsocjdZYZUdFTUq/OkeD3hv50dEXN30hIrIMUSnLimAUtV5JVbSWVU3VI6zOwyCiUqOEQ5wl0Rp7xZQtJiUYkxukPCnfTJtBKFscVStdDVCnIb3m2rVrU43y2NHXpy5IUt1V77nStek2axGRZYg7+mRFMIqHXd3RF6FJcpQGIKpTymJnHu3oI9VH6QuafUHT5EjdRkidUyaZkhD/+c9/Bh6T2qWcNSl28rG3bNmSavH90nQ8+vzjHOb5oPw4sODex9b8UpYVzCiWRuW4Dz74IJ1/586dpfdGN33oS3Pbtm0Dj+mLo3ozir78aEVUvPFGLds//vGPU+3AgQOpRgOD4oqo2AI93/PoizTG61rj/zAqK6gIsp4Ism6ifUFNRNSerX0hItIR3ugTKVKJxJEaGueaoeq6qeqYTmqOiIqalDhx8uTJVKMbk9dff/3AY1KjNJyJ3gdZLZWIHd3Uo5ujl1xySapVhxQZiRMRWQHoKYsUqUScrrzyytKlJ0WoSGXH6BwpSGoAueOOO0rnj/5ua/kmWxy03xrH6+iqm9RnfE163ltvvZVqFE+jq4SoxFvLyrjSij0fFGekEaWRqj+tUhYR6QiVskwUS9ESXo3cvfjii+m5UR1ShIp8YRpcRP4uKe8IKWVSqASlIyqQkiXVTT4zKdL43JtvvjkdQ+qc/Gn6bGm9VKW9nv42VMoiIh1h+kIEqCjqSoNJa/WBRE8//XSqxYaMdevWpWMo9UD+MWVzacB89HxJKZNvSyM+z507l2pxASplqulcpJQp2UI5ZXq/EWqkoc+sun4rHhcz563xsgOVsohIR+gpiwCL7TPTuE1SYJXOs2pLMqli8nxjUoHauOlc5O+uXr061ci7jdBC1IsuuijVSAFT51/8megY+sxoJCd1LlKLeYSyzHQVpVIWEekIlbIIMGxKg4555ZVX0rlmZ2fTc6nLL86FoIwsZY2pY626wil2/l1wQf6xSSmT+iQ/Oua9P/vss3QMjemk7jr6zMhnju+NPjMabkSf4/33359q1WFPFVTKIiIdYfpCJp5xZpdpnCdRHXIfM7HkS1JOmXxggs4XR2uSKqbMM83WIJUdoQlrMaHRGnvu5IlTt2Q8jvxpgkasUvceqeLKKi9zyiIinaNSFilSzSVH6A47eaGk8GJKo6qAKeFAipo836j6SI0eP3481UhBko8dM73k25LqJvVMip1UcHwNes1Vq1alGvnY1OVXUc/kO9P8bZWyiEhHmL6QiWKxt5FUV0SRaqWVQrGDj7Z0UKaXtoxQjpjUZ+ymI/+b5gCfOXMm1egqIc61IFVMV/CkRikfHD3x1rK6pSsJulK54oorUo18ZlLBFcwpi4h0jp6yyJCQKqZZBjTZjTrdKotTKVdMvu3LL7+cagTNnYiJCUpHUI6Y8sakgqPnS9tD6Hmk9EnJ0lVC7NajKxXqDqSfkzLmRPwdV9IYramURUS6Qk9ZZEhmZmaqWeaSz0xEZUwKm7xc8l8//fTTVCNPOU5Zo4QD5Y/JyyUVHKe9kdqlK3j6zGhyHCn7qLyvuuqqdAx1JNJcZ1LZ9JrxOLqKoml+KmURkY5QKYsUqeSU6W767OxskpXVlAblZCOUI66oxdZ43nGEstGkUG+88cZUo88jes+kRqvQ51NJblCXYmWzd2uckqFuw1gjVew8ZRGRzlEpiwzJPLnlUpyJFNKzzz6batH7pLQEpRKo64w2cpA6j7417bwjT5kUJGWoK0kI8ncJ6sKjzyj+7JRvpnQEdQfSPj76HLdv355qFVTKIiIdoVKWiWexN1zT+clrpS3JcXbvE088kY657bbbUo1ma5APTH509GQpB00dbBs3bkw1mq0ROwbJ/6b0CNVo6wpdJVSUNz2PEiv79+9Ptbh1vLXsIdPVEf2d+aUsE8+wbdbDDihqjb806UsttjhTgwN9mVehy/P4RUpfmnSDjWyISgs1HUOvST87/UdTGfpP/6nQjUoaaE9LUulnj23b9HdGf0PaFyIiHaFSlolnnKufDh8+XFLP1ARCijdGt8huoEtzuql37NixVKMRllF9kiqm90o3yuiGYGwooVge3cAjK4R+dlK8sQGGLB9Su7QklT4zGnJPQ5siDiQSEekclbJMPFVPOSrqajMAnf+xxx4rKerYQk0tz6S26AYVKV5qoojHUeSOFDDFwqiRI8bkqD2bPOUYpWuNrxxI8UblTT8TQcdt3bo11SqjOz///PP0YVBsTqUsItIRKmURoOIzT09Pl7zoZ555Jh1HQ3hIlUXVSuMxyZ+uLjatjOCkoUUVNdoaK94INXKcPXs21SgSR58ZtYXTYKQIecXUPk1++n333ZdqsemGfk+ESllEpCNUyiJAJVlB6+EJUpBUo1VPsc26MkCotdZee+21VCO1SOow5nxPnz6djiFPmVQxqcOogul5pM7pZ6dhRtdcc02qxZ9py5YtpXNRyzZ52wTdX4jQ35lKWUSkI1TKIkUqypj8Y8qw0t16yhZHpUzDgagWF662xv4rLRCNKpgUatVnJm84KnZS3dXVT9TlRx19kePHj6fa//zP/6Qa5ZQpfUFUOkDt6BMR6RyVssiQ0KD6Xbt2leYbENSdFhU1ecCksClpQZle8lFjjpiSHJSDpvdGz401mr9RHUhEP1Nl9gV5+jTciH4m8skr3XvVDlCVsohIR6iURYakcne9tdZeeeWVVIsTxFrju/pRkdLCz0oWuLW8hLU1VtTRG64kKFpjVUx+dOzyI7VOnYCUqaaJbaRaN23atOC5SD3fe++9qVb9vVfSOlRTKYuIdMQF9D+SyKQz7Kzk6sxcmptBw9PffPPNgcfkl1KWljr/yAeOszVay8kKmmlRUcCtsXqOyrvqFVPSgtZNkeKNiQ+aOUHpDoK6/Ch5snPnzoHHNKOEVL1KWUSkI/SURYCK4qVjdu/eneQiKat9+/al2tTUVKqREozQlDXKLlNHHyU+onquzFxurT5NLs5dplkS5J3T+SubTVpr7ZZbbhl4/Pbbb6dj6Pd09913pxoRVTFRSWi0plIWEekKPWVZsYx7IWq8m05qlO7MP/XUU6lGSQvKyVK6oPK8kydPphr9Wyf1GX1g8o/JByYlToo6qmfKKVf9XfocaQFqPO7WW29Nx5BS3rx5c6rRhpWDBw+mGmXWK6iURUQ6QqUsMiSkxB9//PF0XFWBPfHEE6kW1TipVkpfVCe7kaccX5PUdPV7g/zomFQgtUte8c0335xqpM4pVx3nUlNOnHb7UR6bfGZKc8SrMureM6csItI5pi9k4ql6z5UdfTRBjNIFR48eTTXK4UZ/l3K/NIWOssX0XNrRFzd3VDaizAd1G8b3QbniCy/MerHauUieb1Ts1EX47rvvphrdIyAlThnkU6dODWVDqJRFRDpCpSwTRbVTr6ieS9uJKX1BVOYAkwok/5g8X0pCkPqMyQryfGkPHuWlSfHGDDIp+KuvvjrVaKMIdSmSCo6T9Oj904xouh9AUAY5/r3QVEFCpSwi0hGmL2Tiqd4Vr+SUCfKPKX9cUcpHjhxJNZpfQTOWScnSzIboIVfzx5SYoFpUsnQMKVRS3Rs3bkw1SpTEtAt1StJrUh670r1HVDPy2hciQ0JWAt0soptpBH3RxS9c+jKhy3+CLtnpufHGG/3nQ198JPDoC7fyPKrRfw70Hxk1j8TfATWnUEyR1nbRTT2isj7MdVAiIp2jUpaJhxQNKZioGCku9eqrr6Yaqec1a9akGkXnYrMIxdMIajJZu3ZtqtGNvtiMQk0n1RuJNEw+LnWl85OCJ6VMzSk0bOjnP//5wGNaGEuquErlb4jsC6qplEVEOkKlLBMPqWLyDaMyfvbZZ9Mx5EvSmnpacU8+5+HDhxc8hgYS0U0rGnxPir1yA5MUMPndFE+LKp6aR+gGGzXXkKd8++23p1q8CiGFTVcN9DlWR3AOO/xKpSwi0hEqZZkovsU4zwWzoqSinn/++VSjMZEUbSNPM7YzkyqmpofqCidSz1Hxkn9M8TpSmjSsPp6v2jxCIz4Jem709WdnZ0vnopZqWoRbPV8FlbKISEeolGXiqbZeR0W9evXq9Dwa//j++++nGmWGyed87733Bh6Tl0uqmFQrqVtSnzENQekIgoYUUcNH9JmpjZsUPL1X8qzps43qmZIulGzZsWNHqlHqhqikLwiVsohIR6iUZaIgtUJt1vM8d8FjSPVRKzMlFV5//fVUi8qY/Fcack/qmRQvqcro+ZIXTT425ZTpZ4/Q50qqmLxiGkhEaRfy9SMPP/xwqlEKp6p4TV+IiKwAVMoyUVSHD5HPHJ+7f//+dH5aH0RD6EnN0TyJ2MVGC1FHUcWkbuNxpFrJs656yvF89B4oj03Hbdq0KdUoFTM1NTXwuDpUqJpJrvxdVZM/KmURkY5QKcuyZNg721XlQ6ue4lS4DRs2pGPIUyavmJIQ1MUWPU3yj6uqmFQrzZOoKGVKKlTXOsXPkRIlBH3eNLaUpsQdO3Zs4HHl99sadzdOT08nxVv9u6qgUhYR6QiH3MvEU80px04u8oVJocb5Fa3xnGHq1otKkFY/VaezUXKDZkdEdUteNylgSpTQ90tMblCSg64a4nS51jinTEmLhx56aOAxKWBSypWZyONGpSwi0hF6yrJioTvi5P1RFvXgwYOp9tFHHw08JmVIXiv5x1V1Gz1kUq2kzim/S6qYFHt8H5S0IO+cvG1SslGx07moRv43KWoizr6g/PTMzMxYVbEdfSIiKwCVsqxYKmvfW2vt0KFDSVHTTN64VYTUHClU8l9JtZLKjq9B6pw8a1Kt1RkWUT1T+oJ84OoOvZiiIN+ZFDB19BHkzcffZzWnPOxclPlqFVTKIiIdoVKWFcG3mJOcoKlfNDM3KjDyhUml0ZQ46n6jGROx9uGHH6ZjyGemc9FrElHdkgImVf/111+X3lv05ql7j5QyZbTJs/7lL3+ZapF5NlKXNtCMM5NMqJRFRDpCpSwrAlLFpJ6pk4tmWFxzzTWpFrdo7N27Nx1DG6NpczIpTdpBF98vqXNKUFAig9IdpDSj90zpEXpNUrc0FznOpqA50vSalD+mn5NmJcfXrKrdxVbFhEpZRKQjVMqyYiH1PDMzQ4cmRU0qOPq51AFGCpgSE6R4KUURjyNl+8knn6QaKVmCFGl8DTqGUhV0HO3oi94zpTvo/KSK6fyk2GMuuXplNWyCgs5nTllEZBmiUpZlSSU/WlVDBCUCYgaZ0gCUvqD5vuR7ksKLGWfqRCOlSUmIKpWcMvnAlO6g565fv37B51Fqg6a/VYm55OrfQXX+NjGsyvZLWc4L4740HOW5keqNvvglTJfYdKOPbi6S5UDniwOJqNFilC9gshziFyLZL/Reaa0TvbfYtk1NLWQN7du3L9Xoi5r+E4zRtm8xaOi8T2zTvhAR6QiVspwXxqlsCVLiFPynkY3ULk033eINMFrDROcnqLmjctOtqopJfVK7Nx0XLZLqICCyc+hGXGzRpqsL4qc//Wmq0bAkIv5eqnHJcQ8pqqBSFhHpCJWyLEsqN2rIN6QbNxRjI4UXlWA1ykWD6WngPCnlWKuueaIaxfDouKjO6Uqi2tpNDStRZVPr+I9+9KNUo3GqNDiKahWWQhUTKmURkY5QKUtXVFMasVaNOFHb7NmzZ1ONEgdR8ZK/Sx4tjbmkaBs1hkQlW1XnpLoJUsrxNUidUzqCRmuSHx3VM7WX0+dPVy/kKVdGtlb/XpYClbKISEeolKUrqikN8oYjp06dSsfEQfWtcdaVjovqkzxUSiVQSoMUL6nn+JpVdU4KmFqvyS+OyphUKyUtqAmE1H/8mejzoeYUyo6vWrUq1Wjs6vr16wf+FpZi0FAVlbKISEeolOW8MEpHHz23kgcm35O6vd555x16zVSLiQNSeHGAe2vse1Lig5R39ItJjZJ/TOq5mnGO6pk8a1L61NFHn3dU4pSWIAVPxJbt1jh1M+xwoKVApSwi0hEqZTkvjFuZxEwpqelnn302PY8GAZHiJdUXFSMp8bjKvjXO6pK6JRUcFTWpVvJVyZ+m40hRRw+ZvFyq0Xs7efJkqm3evHngManp++67L9XI5yd6TlZUUCmLiHSESlmWjFHWt8f0BSlUUmBHjx5NNVpZRJ5y9J5pvCepUToXZX8pqRBVKyUoSBVTxx1BSjm+D5pMR4kM8oFvuOGGVIt55g0bNqRjqHvvwQcfTDWCZp5En3ncUwvHiUpZRKQjVMrSFRVV3FpWxqQWSaWRGp3nfaRa9Hyrk97IayWlSZCijtDPREkLUtmUoojKuOpZ33HHHalGy06jr7969erS+at/G6YvRERkbFxAfpHI+WCc2WXyEefm5lKNlCepVuoKo5RGhLaY0GvSxDZKacRpchXl3Bp3FpKKp9kU8Ypg3bp16Rjy0ymNQhnk+LOTp0zQzxTXPM1Hz8o4olIWEekIPWVZMkbp6ItbIkjFTk1NpRptFCF1S8Sryvfeey8dQ6mHynaP+Yg+MCUcyLMmn5mmsZH3HD1k6j7ctGlTqpE3TJPdovqnlMz27dtTjVhOCriKSllEpCNUytIVlelv3+JcqXbixIlUI3VLCjJ6oZRvpueRb0ubR+i46HeT70w77ui4YTdQb9myJR1D759e88iRI6kW51VQl+Uko1IWEekIlbKcF6pJC5r+Rl14cTYC+cJnzpxJNVJllNWldERMeFCagbLAFd92vvcRPw9KOJDnS0mFajcgbRCJkMKmGciUFY9XBOQpVzPJrbWhrqx69qJVyiIiHaFSlvNCVZlMT0+Xzvfcc88NPKb0BaluUrfvv/9+qlU6/yhVQecn1U39AeTJxjww7fuj2RoEdSDS+eJWDlLn5H+TwiYVH31ymolMV1bVbSE9q+AKKmURkY5QKct5oToRjjrzPvjgg1SLypiSBbTxg3xb4pNPPkm1qHgptUHPq05UI8UblTKp3cqcjvlek7LL8QqAlD750z/72c9Sja5gYp6Zrmho6h9ll5e7KiZUyiIiHaFSlvNC9W46+YakpOIuPFJWlKUlpUn+KG3MoDRHBVKLpFrJk41XANQ1RzVS8aR46bio7Ol3Qp16L730Uqpt3Lgx1SKzs7NDq92e5yIPi1/KsmTQFykNN6dY1b59+wYeUxzrlltuSbXXX3+99N7oSzPGzC68MF9oVgcG0Q1BirHFL3S6uUjPoxuV9KVPz43/EdDNV1o2W22NHuVLOLLcv4AJ7QsRkY5QKcuSUW2v3bt3b6rFgep/+tOf0jGkAunmH9kcpHijSiUrhJ5HDRoUAzt79myqRZuAbrDRa1ZjbNTYEpeikip+6KGHUo2ucqhJJjLKolOVsoiILCoqZRmZyhAhWtFDa+RJbRFxsBDFwqgphCJgcQxoa+wpRw+ZPGVShqRuv/jii1QjJUs38SLkp9MVAalnGlZ/2223DTymz5FuvpL3X2kGGmWE60pEpSwi0hEqZRkZikxF9VNVORRFe/vtt1MtDrGhduHjx4+nGvm2BDVyxCQEqWnyaIlqu3T0u2+++eZ0DLVnU/MINdjcddddqRYTKrT8lIZE0WAhagaKVzXVWNtK9I8JlbKISEeolGVeRlEwL7/88sBzZ2Zm6HnpNZ977rn0mjfddFM6LmacaXg9+bY0IIeUJrVLx+MoC0yDhujnJFVMLeDRL45NM63Vl5iSP00jT+OqJ2oAIf+Y1DNx3XXXDXxIk6KAq6iURUQ64gL6n13k21BZbEpDhSghQNll6vyLSpMUMOWPKUlA7cekSKNqpa48yi7TQCJS2aSU43GUtIhpifnOT8mTG2+8MdU2bNgw8JgUNilxStgMy0psn66iUhYR6Qg9ZRkZUjDT09MDSoeG8lDSgqgs/Pzwww/TMTQngnxm8pQpHRGTFaTEaVAPXY1Slx91IP7whz8ceEzqnN7/5s2bS++N0ihRKdPvjvLHlFcfVj1PiiomVMoiIh2hUpbWWt3DG2dX1bp161LthRdeKD03+sCkbEmJj7JOKSpvOhcpdvJtKW9Muef4c5JXTJ2A5GPTVQJ1IMZZFw8//HA6hvLH1XVNkUn2jwmVsohIR6iUpbXGyqcV17eTqpmbm1vwuaTSKF1A3m2cvXDs2LF0DKlK8l9JVVK6IH5GlEqgjj6afUGQdxu76eizoFQFfY7Ejh07Ui1+tvOo1rFdMU2yKiZUyiIiHWFOeQKpenjVdU3EK6+8MvD4wIED6RiaA0w5X+rW++yzzwYe06wHShZQ/pjUM6nWmCMmL5f+PW3ZsiXVaLUUdclFtU9XF3RFQK85NTWVaqT2Y/elnu/5RaUsItIResrSWqunKqqJjNiZR74tde9VO+5iNyA9j/xdUpUVVdxanoJGaQbycun8pKhJKUcVT4kPynFTDpog7zxeIVHWWPW8eKiURUQ6QqU8gVTVLimkOP2tNVaCccoaeaikNKmr7a233kq1uEeu2r1H20KoVlHn9F4p80xbpMnLrShvUsA0E5lmgdC2aUrdjHOGhXx7VMoiIh2hUpbWWl0907Q3SgRExUj+Lqk58nJJkUZ1TiqT8sG0W+7SSy9NtUr3G50/zqpojedVkDqPMyday7OkyYenz4f2HxIVv3iSt4AsBSplEZGOUClPAJVkBSkf8ht37tyZak8++eSC74GUJ0HeM81djlQVMG3pIKVJ6n/9+vUDjw8fPpyOoSQEbU6hNApdhVTORbz44oupRjMsJmVD9HJCpSwi0hEq5RXGsMqn+rx5ZmQkKlujKeFAqpWmvcVuOpqwRjXqwiNvmzoXY7chqVbKH1Migzxl6riLnxF5xXSVcPvtt6da9b6BfvHSYpv1BBD/4VW/WGkNU2yfbo2tifhFRF+G1D5NC0vpyzX+3VJUrNo8Qu3eZH3EGF51zdPatWtTjaB279/85jcDj6u/O6Iadavc6JPFQ/tCRKQjtC8mgKh0Tp06NfTlEalWUodRPZ8+fTodQ2MoSfFSc0q0Oeh51JJMapQGztPNxWhz0M9NK5eqQ4TiiqvWhlfGozSAqIyXFpWyiEhHqJSXCeNc10Q3hiiORYPjq0OEYsME3cCrvjca8hO9Z2rkoDGg1NxRbYiJ6pneF70ParOmaF7lhmN1DVN17KqquD9UyiIiHWH6YplACvjQoUPpuDigvLU8ROjo0aPpebSS/ne/+12qURs0pRyikiWFTWqRlDIp3piEoAQIJShiA0hrHE+rDEsiNU2echz52Vpr27ZtSzUaoxmpLhlQAS9fVMoiIh2hUu6QUdY1EVF97t+/Px1DSpaaHkhBUt44qmdSlaSKyVeljHNMZKxbty4dQ0kRSl+QD0wD5yOkbOmKgz4fajyh51ZWMxEq5eWLSllEpCNMX3TIKEtMK7lW6tQjSLVSazQp0vg+aAg9pR4oq0vq/JZbbhl4TGqactDkY5MPTM+NeWZ6Hl1x0HHUuUj3AyrdmA6lX1molEVEOkKlfJ4Z51wBUk2kgqN6owQCrVyiLjka2E4+bfRbaf0RqdHKQPvWckfcJZdcko7ZtGlTqtFoUBqetHHjxlSrQPMw6EqCxmhWqKYvZPmiUhYR6QiV8hJTTVpUfWCa4hZTFKQWyWslyLt9++23F3zeZ599lmqkgGP+uDUehxkzyOR108B5ylTfeeedpfcWVTApYFrpRFcJBN030C+ePFTKIiIdoVIeE+McFj43N5fORT7wwYMHU43UYUxRUC6XUgM0Z7gyPa01nvcQIVVMKQ2a9hYhL5c8a0pCVGdfxFkXNHCermgqqYrW9Ivl/6FSFhHpCDv6xsSwSjnOpWittkCzNV7cWTmO/FdKVdBMCPKPSRVHT5ZUMalRgs4fc75V35aUMq1Oqr63CL0PUspV3AIyeaiURUQ6Qk85ME5lMuwSU/JtaS7CG2+8kWo02zhOWSOlXNnu0RorSEpkxJwy+cKkgGmGc4XqvjzqGKTXpPM9+uijA48p6TI9PZ1q9HdQ7cxTGU8eKmURkY5QKY+JqqKJqolmG5NCfeGFF1KNlCD5wJHqbOOKVzzf+eIMYer6o6QI/ezUcRenuNHs5BtvvDHVKB1ByRbquCNlXIH+Nkixi7SmUhYR6QqV8pio+oaVLCp5nDRVrJotjjliUsW03YPeB80BprkZ0UOmjj56r1u2bEk16py76667Bh6Tl07T5e65555UI5+8Mm1vdnZ2qB2JIv8XKmURkY5QKQcq3jDNKKAtGhVozx5tSSZVTNC2kLVr1w48JoVKUKqCnksZ5OhtU/qCMr007Y2UfezWo3QK+dO0UYQSExWcVSGLgUpZRKQjVMqBiidIvnBljnFrWdHRfIbjx4+nGh1Hm6XJf41+K6USKAlBPvD111+farSrrtIRR1ueyTsn9R/TFqSmqVNvlGl7MaWhKpbFwC/lBRhlYemBAwdS7Z133lnweRTvqkKX/zHGRlYLRbTIXqBoG9kE8eYixeuoiYVuJP76179OtciLL76YaqMM+KEB/34Jy/lA+0JEpCMcSBSoLKokpbl///5UI8vhww8/XPA90M2/eLOutdZOnz694Llay+qWRneSAialTM0pZGnExhaKolE7OV1JPPDAA6lWGdpEN/Wo+WX79u0LnouwBVoWA5WyiEhHqJQDlRt9zz77bOlcpPr+8pe/DDwmlUlq+qOPPkq1ipfbWl6BdPPNN6djKP5G6pnUP904pJuQEfK/yVOmnzPexKv6x5WmkPnOpzKW84FKWUSkIyY6fUEpiqiQqkNoSBXTIJ04ZJ386WrbLx1HzR2kNIeFfGZqdonJCorqkaqn97pz585UqyjeeZTt2NZ2iSwGKmURkY5YkUq5upqp4kOSAqY18tQoQko53v2nNAD5/OS1kvd86623ptqJEycGHpMaJa/47rvvTjUa/EMrluJnRJ/j1q1bU4146qmnUm3btm0Dj+l3Oc5ltiLnC5WyiEhHrEilTH7jqVOnkmqiltvomZLaJX+UjiPPNLYzkyqm4fUEPZfU86ZNmwYeU06ZMr00aIhqlAyJy1qpDZpGX+7evTv9UFEVt5aXkc7NzaXnDZs/FllKVMoiIh0xMTllSlocPHgwHRdVH6k0Ws1EnjLlfKO/SyMtKUFBSpY6+sjfjTUa8HPbbbelWiU90hr70evWrRt4TEkRSnLQGE1KwESVPW7/WD9algqVsohIRywrpVxVL3QczZOoqDJSaeT5njlzplSLKpj8WFLPVKPRmpTSiB7y/fffn46h90GQn05XCfE1aLwnZbSjVywyaaiURUQ6YlmlL0jtzszMlI4jVfz444+n2saNGxd8HxdffHGqUaKBPNOYjqDZyTQTIs6vaI1VK80BjnMoyEungfA0xY0yzqS8ozKmHHF1hZb+rkwSKmURkY5YVkqZ/MbqFhDKLtPMhqgiaU09QZ1uRFTPlNCgjRw0x5i2eVCtspqJVHEV6kqMSpmU7fT0dPrdqYpl0lEpi4h0RDdKuTLHuArd6SeoO+3IkSMDjykfTJ2A586dSzXynmNygxQwKWXyp2kGMhF9bJp1HHPFrbHPTH40dc7FKxP6/dLVC+3BG6d6VolL76iURUQ6Yqw55VFyxBW1UlVb1bv6tEEkqlTqrqOkBWWGKVkR1TM9j5IWcb19a7zxg7ztqM5J2VJqg6Arh8qViZs8RGqolEVEOqKbjr6Kp0z5Y7rzT6ryxRdfTDVKVsR5DzRfgpRsnGkx3/uI7/eWW25Jx5BXTD4zpUdorsWvfvWrgcdHjx5Nx2zevDnVaGM0JTkq09hUxSI1VMoiIh3RjVIelmeeeSb9ADTHgZIWr732WqpF9RznH7fGapEUeyWDTL4wvSapbvK7d+3alWox0UCfGSUtqkmIeToth1LGlDun9yGyUlEpi4h0RDc5ZSKqJkpVnDx5MtUoSUBKmTzZONlt7dq16RhKfNBMCOqSq3T00fuimRzHjh1LtVdffTXVWtjgTAkK+mwr275b47kiw6IqlklHpSwi0hHdeMqVGRbUSUfQDGRKL5Cipr16EUpHVHO+cV8ezT+mJAclRe65557Sa+7atWvBfXa0L2+cXZbjzKuLrGTGal8s9j8yajWm2FZcb98a34z65JNPUi02WqxZsyYdQ1+Q1C5NX7jvvfdeqlUgi6AaT4s39uimXvUGm1+kIouL9oWISEeMVSlXFdOwl8WkiulmF8XTaOEnNYZEqBmDbsTRyExSxT/5yU8GHlMjB8Xkrr322lQjy2TPnj2ptnPnzoHHdNVQHeI0TlTYIhmVsohIRyzJQCJi9+7d6bmx9be6fJOOe/rpp1ONvOEYUaNjyLOm5aGkbqOPTcfQyE9iamoq1SpjNEcZDqSnLLK4qJRFRDpi0SNxoyirGN0iNfrOO++kGsXfyD9+4IEHUi0Ocafn0flvvfXWVCNvO3rPpHYPHz6cao8++miqURMLxQajeqbnOVpTpA9UyiIiHbHoOWVSZZT9pZxsTBc8+OCD6XmPPfZYqlEqgdql//jHP6bal19+OfCYkhCknqnp5P777081UsGRe++9N9WqQ38+/vjjBS99bGUW6ReVsohIRyx6+oKoeqFR8dKAn9dffz3VqNONzn/ZZZelWmUZKWWe5+mSW/C5lOSoJChaYx+YiN6wCQqRflEpi4h0xNCeclUVkwLbs2dPei6p4AglLUjZUncdQcPk47JTWmxKnjIN1r/77rtT7cCBAwOPSRXTQCXyyUn902ChiKpYpF9UyiIiHbEkQ+6ra+p///vfDzyOKrY1zgzTvAqaMEfEDkHqrovjN1tjf5rYunXrwGNKVVQWkc5HZTD9KEpZP1pkcVEpi4h0BCrlihqqDi2vLumkNUZxWeibb76ZjiElW1WtRFTxNPuCuO+++1Ktko4gpTzKHIrqDORhURWLLC4qZRGRjkClPE41FGf5tsbpAiJ219Ec4+uvvz7VyFOmGiU3vv766wVf84orrkg1mlZH6Yio/mlG9CjJllGOE5GlR6UsItIR5Y6+YX1J8kwJ2sAR50mcPXs2HUN79iilEXfvtcbddDELTf43pUdoDsXLL7+cPrOYMnEPnoh8E5WyiEhHlHPKcfYCKTzKyFYhxRs9XzqGNnecOHEi1ShbTImPmKKgTkOak0yqmNRz5TNSFYtMLiplEZGOKHvKFYVHuVzylPfu3ZtqlITYtm3bwOOXXnopHUNzjCmnTMeRzxzVOKUvRum4i9CsCj1lkclFpSwi0hFDpy9ovi9ldffv359qUQHPd1zcyUdzLmgzyJEjR1KNtoDQZLdrrrlm4DF5yo888sjY/HS3gIjIN1Epi4h0xNCbR8j3rHbq0Vxk8oHjcbTb78yZM6lG6pkyzrRBpDI3ozrnYpw+sD6zyGRQjsTFLwX6Qli9evWCzRLzsW/fvlSLX8JfffVVOmbz5s2pRpG46uCiyy+/fOAxNY/QF3B1QWwFv4BFJhftCxGRjvjusO3TdGNreno6Hffkk0+m2rp161KNlGyMyZFSpoYSqlG0jVR2bAypxvzoZx9W8aqKRSYXlbKISEd8t6rKho18UVPIqlWrUo2aO2ILNQ2cp4WiNFrzpptuSjWK4e3YsWPgMXnF5JPTceOMu+kzi0wGKmURkY4opy+i6iPlTGqREg6xKaQ1bgyJ3m0cet9aa1dffXWqnTt3LtViqqI1VufRQ15sBVxFVSwyGaiURUQ6YqwDiajNmsZcklIm1RqV8SiNIlNTU6lGGeRhWezmERGZDFTKIiIdUfaUoxIkFUiD3levXp3Odfjw4VSjDPLGjRsXfF+kumnNEw0fosWm8XwPPvhgOoZyytW1ThHVtIh8E5WyiEhHlJVyhDxm8o9pIDwtSSXFG/PMlD+m7kCCuvcqY0UpfUFrnghVsIh8W1TKIiIdUVbKUfUdOnSo5B+TWty8eXN6LqUvIpQ1piH0lZkWreWB9lXoKsH0hYiMA5WyiEhHDD3knqgqSBqGf+DAgVSLk+PIU6aJcDRvo6qKY3aZUhXVOSCVzj9nWojIN1Epi4h0xNDpC6I6E4I2lNC846huaboc5YhJic/Ozqb39swzzyz5slNVsYh8E5WyiEhHjDWnTLMviL1796Ya5Y2jMqYsc9WfJnVOyQ3ywEVEzhcqZRGRjhg6fVHd7UdKdv369alWmUMRN5HQMa1xnnnYrdTmj0XkfKJSFhHpiLEqZVKQoxwXp7FVZzOToqbJdDRjOXYl0pwLs8UisliolEVEOmKsHX1ERQG3xhuio5+7Z8+edAx5xeRP07Q6Ot/OnTsXfK/T09OpRlSuCFTYIvJNVMoiIh0x1o4+Yh4lmNQzqdvYObdq1aqSrKdpdaR4CZqfHKl64pTlXopN2CKyfFj0L2WCrAqyBGi9VIQiawcPHky1G264IdWiVdFa/sKtDh8i/AIWkW+L9oWISEcs+o2+KpWY2Sg3DckeIZsjrqqieB0NNyKMzonIt0WlLCLSEUviKRPDKsiqKqZIXOV85FmrgEVksVApi4h0xKIr5XGqylHiddXBSJGqZ71mzZpUo3hdPE7VLSLfRKUsItIR3aQviEpLclVpVpe6RmVM+enq+Yn4mqpiEfkmKmURkY7oWimPE1LU5PlGJVv1lInKaimVsoh8E5WyiEhHLHulPEp6YW5uLj23kmem89O5qGOwMvZT9SwyuaiURUQ6Ytkr5VGoLH+tDtb/+OOPU42858rkuFESJXR+B+uLLB9UyiIiHbHslfIonvKwz60o7NY43UGKOvLBBx+k2q5du1zgKjIBqJRFRDpi2SvlXiB/l2ZwxHkblSxza6N5yiKyfFApi4h0hEp5Eal4z6P435Ulr605b0NkOaFSFhHpiG42j/RCVKSV+Rit1dVnPI42ds/MzKRzVWdwVN6bqQ2RflEpi4h0hJ7yEjPKhu5xdhGKSB+olEVEOkKlvIhQjjiqW/KPq1QTGSplkeWDSllEpCNUyktMdY5GdT9h9bnDnmvY84tIDZWyiEhHmFNeYkZRwAQlN2ZmZhY8/7jz2M5wFhkO7Ytlwvn4Iq28JuEXrsj40L4QEekIlfIKo6Koq+NCiXGqbhW2SEalLCLSEd7oW2HMoz6HuulGzS/xXNX3oSoWqaFSFhHpCJXyCmPYOJ1JC5E+UCmLiHSESnkZU000xONGyTxXiX60Q5FEaqiURUQ6wpyytNZGa+12XKjI+FApi4h0hJ7yBFL1oufm5tJxs7OzC+ag53uNymva+SeTjkpZRKQjVMrSWmOFunr16tJxRFS31B24Zs2aBZ8nMmmolEVEOsL0xQQw7MD5YXPQdNw4zyWyklEpi4h0hEpZWmujKdRRMs4VKopaNS0rBZWyiEhHqJQ7pBdflRITw+4AHOe5RFYyKmURkY5QKU8Aw3bXDXuub3O+cUFK3PkbshxRKYuIdIRKeYXRix8d6fV9ifSGSllEpCNUytJaG63jblhGmcNsTllWKiplEZGOUClPAOOcfUH0oFL1rGWl4JeytNYcGCTSC9oXIiIdoVKeAHq4KabCFqmhUhYR6QjXQU0AwyrScarbQ4cOpdrMzMwwp2qt1dS/6lyWIyplEZGO0FOWRSEOCKIxnYRKViYdlbKISEeolGVkhvVu9XxFMiplEZGOMH0h34qlUMWV51aH3KvOpXdUyiIiHaGnLMuSSk7ZFVGyHFEpi4h0xP8Ck4pAO9mlkTAAAAAASUVORK5CYII=" id="imageee3875da16" transform="scale(1 -1) translate(0 -272.88)" x="304.56" y="-12.24" width="257.04" height="272.88"/> - + @@ -1247,7 +1247,7 @@ iVBORw0KGgoAAAANSUhEUgAAAWUAAAF5CAYAAABHkTtbAAA1+UlEQVR4nO2d3a9V5fW2H9v6/YVSUdAq - + @@ -1262,7 +1262,7 @@ iVBORw0KGgoAAAANSUhEUgAAAWUAAAF5CAYAAABHkTtbAAA1+UlEQVR4nO2d3a9V5fW2H9v6/YVSUdAq - + @@ -1277,7 +1277,7 @@ iVBORw0KGgoAAAANSUhEUgAAAWUAAAF5CAYAAABHkTtbAAA1+UlEQVR4nO2d3a9V5fW2H9v6/YVSUdAq - + @@ -1310,35 +1310,35 @@ iVBORw0KGgoAAAANSUhEUgAAAWUAAAF5CAYAAABHkTtbAAA1+UlEQVR4nO2d3a9V5fW2H9v6/YVSUdAq - + - + - + - + - + @@ -1413,7 +1413,7 @@ L 206.751953 3.047384 L 221.052696 -0.629164 L 222.524099 -1 L 222.524099 -1 -" clip-path="url(#p4efb72283d)" style="fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pd06e5c9bb4)" style="fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: square"/> - - - - - - + + + + + + @@ -1617,12 +1617,12 @@ z " style="fill: #ffffff"/> +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" id="imaged87250af31" transform="scale(1 -1) translate(0 -277.2)" x="561.6" y="-12.24" width="257.04" height="277.2"/> - + @@ -1637,7 +1637,7 @@ iVBORw0KGgoAAAANSUhEUgAAAWUAAAGBCAYAAAC+UKAvAAAj9klEQVR4nO2d2ZbctrIF4UmyZXn2/3+f - + @@ -1652,7 +1652,7 @@ iVBORw0KGgoAAAANSUhEUgAAAWUAAAGBCAYAAAC+UKAvAAAj9klEQVR4nO2d2ZbctrIF4UmyZXn2/3+f - + @@ -1667,7 +1667,7 @@ iVBORw0KGgoAAAANSUhEUgAAAWUAAAGBCAYAAAC+UKAvAAAj9klEQVR4nO2d2ZbctrIF4UmyZXn2/3+f - + @@ -1700,35 +1700,35 @@ iVBORw0KGgoAAAANSUhEUgAAAWUAAAGBCAYAAAC+UKAvAAAj9klEQVR4nO2d2ZbctrIF4UmyZXn2/3+f - + - + - + - + - + @@ -1803,7 +1803,7 @@ L 463.431953 3.047384 L 477.732696 -0.629164 L 479.204099 -1 L 479.204099 -1 -" clip-path="url(#p7f75cc55b2)" style="fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pa85e4832e4)" style="fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: square"/> - - - - - - + + + + + + @@ -1946,12 +1946,12 @@ z " style="fill: #ffffff"/> +iVBORw0KGgoAAAANSUhEUgAAAUQAAAF7CAYAAACqxvK+AABfnElEQVR4nO29Z3hU1ff+vdJ7IY2QQjoJvffeexUUkSpSRKSj0gUBlY5UQRSlSFGkifTeBRJqEkIapIf03p8Xz1zf63fvNX8TEYWE9Xm3Jmufc+bMZOaetVfRKSkpIUF4UYrjfNgbSNcxRKc0n9LWCMKrQPdVX4AgCMLrgo4oxH8XVR2JEtKO+44v4T5FDJvF7tPsewPAZ2mdA3/7XrptWc7e8JFjZ/4rr8nLuF7hv0UUoiAIggZRiMI/ovnJT9kbaJHPIbA7ewT9bWVU9+PV7LiZVfEhh1vFbJ3eBwlgxzyoDHaz5kFsTcJM97+8lrCP+GPuW1FLhA0wYD4lZkVgm1rlgG180pKtybfEW3V/6kawPX8dx9ZEfDRDlOdLQhSiIAiCBv1XfQFC+aaScQ57TFWE2uJ2Bsl6YA/sfgXsdO8W7LgNG4eA/dDbkfnonKsC9sghZ8HefqodW2PQEXVBnncu2NVW5rE1tDwVTL04e+ZidcYE7MyqhmCntuL3rjgLlebTwkywdSrlszVdmi6C+5tna8x8civh/Xae8ATsgQ632ZrZx98BO+Lj6aVmD3yd5AP2cCt/dlxnl9jXVtGKQhQEQdAgMUThleC+biW88b7q/jP8/dPzb7M1kR98AsqiTc9l7M1r/BzVXXg/czxvs2fsuDEnqoJt+6AA7E5fXWJrrgypB/YfJ/cwn4a38TnYz0f1F7uAx0D1j1mD3X3CZbAP7G/N1lg8xduQUoO5kE4h2pUaJoJdXMJFW8EfqHpzFBH8eN5Utqje0blwMXca7WXHVTMtul2YDGuOt13LjpsQ7QQ+Ds4x/4rKlA9E4bWk+hy+qZJTBTcpnC7ydb4zHoJ97kYtsB+89Q1b0/zWCLD1TliDneXCz/NB35NgtzXjmzVj1k7G4+biU8qrxP+n82zQxzBd8ambztbk52Pkq9pHkcxnpf/vYFc3NAXb77sP2RrdAjx3pSC8/8bJyqcsEZ079dlfftgREfWpfBfsCX7nYY2agkWkPQ3r30B+MguCIGiQTRXhX6cs5X0qheb8l0vEREwvqec+lzk9WYy/F/03rwa73k/T2HHf63kB7OOpbcD+ZAr/2XcuzQ/sU2NbMZ/c7nh5g/ugpN1zFM9DRKTrkg12ZbtUsA3mW7M1+qlZYD+e68t8epz1wgeUX+uGWqSRWdPnYJtcwvBDrZX32BrPVRgKeTLkGPc5gKlD63bgrwFdGyO25vvHLcHn/WpXXopiZIUTL+OggiAIFQGJIQr/iLKov8UPejGfubWO/uU3vPv6FWxN2MBvwfY4MoatczyP6SUmibhBkjY5g61Jjrb+q0uhSgF67DGnwRFgP7noznzyKmOMzTQCN1UqtY1ja3IK8EdbaogN2IZpXMPoo0CkLFe+WaOLt4GatcCY55VgRUESkaNjKtjx8dZga/voGNMQN4G+u9CO+Rik43No3D4Q7Nsn+K5Q8ALcwPHcswTOHjZ4TqmK8XwEf6+2c8f3qihEQRAEDaIQhVfCxDtD4I13M8EN/n6z25fsG99z5SpYo1c1S3WhkEHzMCl8+9ewJrzbd2xNv5CuYC9yw9LD/pf4Dqz9CYxzJdXmAsUoGR/LroEpQX6fRLE1ZGUBZqEdxu2eTeXqLzcDr8XVOYn5RAdiCaMObhiTcSLXRjk1MXHc9B4mmltGKAchIoNsvL4xqw4wn2E+1+HGND3xGbxGmWfxWomIHn499S+TwmvfGMLW+NphGeeBlptKVZGiEAVBEDSIQhT+x4s0ey1LO7OcWHd2XJMqEf94l7DJ8VnsuN7WuDP655nqYDtfUoJpRBTRB2OE9jdQJxRrycWwHfYU7Gen3ZhPbnVUWFZXsKQuvTUqRiIizw2osFpu+hPs41/znWmbi5hsHjKxKvMZ0wvzJg8u7AR20SiuKm1GpIEdOcaH+ajoNk4Fe3ntX5nP7BXvg22SjC+j7UcRbM1hn+N4HuV957FrKXsvhL83+2+/x0QhCoIgaBCFKFQoaszCnLaJIzAeuD+mIVsTewFLUapcxWYOMa15XpxOLawYUatFiIi81mCMLccJY3BZDnz32m7LNTz3TGxy8dkHPCdy7VIsETy6eAXzafvdTLAN66eA7WOLpXxEROE7UBGaxePzSayrRTormsyqaQJ32WEHdnZl1GX3V/GSwOioKvC6qg0itDUQMbXHGHNg/8/ZcdcFdZA8REEQBG2IQhReC7YGt4Y34hjfSy8UY/RdiArRWBE+ebZ8jWkc/g+kKaEysyh+KTrKZm/30ZeZT1SuNdh3Yl3BdlrOFVbWAsyTTL2ALc5yqvO449SGZ8Befbo786n0CJ9DSh18AtW2Y4UMEbFEw70Ht4Ld8XNe9VN1OLYVO+B9ivn4bsNd+wJXbGlWrSrPz3y+C+OiuXb4fB59yVWl+09f4ViK4Z8xnwm3h4pCFARB0IYoRKFCo+6K17z2HvN52HzXXx6j64Dh7LG45pgfmGvD/48KLfAx3VwUKKN6YPNaIqLvzrUHO2zQZrC9z49ka4ryMBZpZsVV5INm+BzXpeCu+JbHLdma3u4PwP75WjOwzSO4wjVMxeec3JB3xPHbiE1v41pWAlsvj99L7/eDwX68A+u1p0zZz9aMrHYNbrj33sW89v2duVKpIgiCoA1RiEKFoiDWC97QddZPhL/n2vNKj2JTfGxkc4wHzra7z9Z0H4p11E+78J1o96OYhzji+yNgr/tiEFtzfRkqwoWJWNfraxzL1nw3vj/YOoX8f1o/Ba8ltY412B0/wREORETHNmMHn5LuuDOd9RCVHRHR45GbwFargIiIHl73BNveH683rgW/fp0iVNf2ysSDBpMD2JrNDXdIHqIgCMKLIgpRKLfUOjyfvXn7e2CPvoX22EFbW2XN4Gtj4Tgh27DXocO5GHbusOHOYOdba1GeJviYXhbqD5t7XMBk9cH8xoLHOKr0h3c2sDWjbowCu7CA5zdSOnbaqeyFFT15hxzYks+m7QZ72zMcX/A42ImtcT6Dzym6M/98WdEBxy2s/xjzKE2D4tmawIV4fWFdtoGt7XX1m4cZB0Ff8J1oL6VrjihEQRAEDaIQhQqN1zLskFPszHdg1ZpXdWd6X6YVWzPnAHZX+aj3H8znm1sdwPb4EQXK0y44lpSIyNQvFeycXFR2Lt+hTUSU6oPHcdj6J/NZFIIVMKMDcI6M40p+Le034prKBljbnF3M46YFJahOT47iu9eGKzA5VK1T1kbtNRPANmmLx7jVfSlTfzU/QYXo1iucHfdhOKpcUYiCIAgaRCEK5ZaBV8ezN+8vLTaDUlArEc4/82bHMT6GcbqkRliz67uV9110WI8dZgL212I+fYbj+NLLszGPL6EBV3vmUX89UrTIjMcqHZWiHv0c7pPhjDmDVc5jDPFZL6wvJiIaOwIn9R2tjT5pQxqzNTbXMf6X0oT3NkzojrXijT1xSmDQXozhEhHltsIKHtNzmAeaxcOZlO+MnY0iR34q/RAFQRDKikzdE8otVgY8HqiyseFOUAXNkz5lqvKbOT+APez7KWjv5jGuwByUJJe9ePfok9GodAwmYc/B76vx6ooPvv0YbDOlqXbnkTf5eZzxPJW2mjOf2sOw6uSyH/aJdPDmXWm++b0H2KYfo8ByCMDcRiKi4ImoCIsteaWK5S3s+hO/C+e56FXlv1rzlViqOZY/U5Enfy9YX8Pz0EjmQvPu95NdZkEQBG1IDFH4Hy8yP/lVMuT6GHa9u5tt/cuJfz8ewp1fIiKTRHyKeTjojsyi+f9IkQGuqXKBd5wuCcc4Y9isumAb1MScQyKi3HCcqbJ7wDqwh17/gK2xO4hK6Hk9/pJdHoo9Eh30zMB+mM/V3ojF2M2mqDdWqmSEWLM1JvGosfTymAvVeRfV6qWH1cDWyeI/XPu0ugX2mipo9wnpxtZE7/YAu7hHCvNJe4YZBKIQBUEQNIhCFF4LXmRWizZFm1CEO8JNf58KduTYmey4bt/jZD4DJUC1pfFOdu41UZ3Bjs/mcbvkdFRh6xr+DPbFTL6beuZrzNsrNMbL9Rj9mK25ex4VFmn5lzarmwx25kOUwZP7HmVr1h7uhYdV5JNptVS2RvcU1je3HHmb+VzajV3Lc5pi95vCPK4QTR/hPJosD4xNWoSU3nnnztZpssssCIJQVkQhChUKvwML4Q2dk2AKf9/U5Ue2xkkfKzDWxXcE+/y5OqWe16Eer781WIftuSP74d/r+0awNcWKDMueXQXssI/4ufVD8DkGjdnIfDxOjAbb4j5WmUwb+wtbs79zE7DDV1uDnZOI5yUiql0DpxFmLHVhPvbzsGJEVwc/g/Z48D6R3XpjH8ssN1TkHRbwjuW7j+OEQuMkLhDvT8F7JWk3wmvJi44uDRqw4C99iuO2sOM2/Bx/VpslYAqNDe5zEBFRQiv8yWa8jLfC0i1Cn8rOmFz8g+dhtqbVmulgD9h4AeySj3gytN4iTGzu6lSP+VgexBEBzrtww2eRF7YQIyIafBhL91K+xg83+0yeAB4Wia29svrytBtajD4F5vglUMuLhxLsHDHJOrMKlgh2tMAmHkREJ+5hM4omU28xHzU0Iz+ZBUEQNMhPZqFCM+bWcHiDX/6tPvOxaI1JyTknsdVUhgdXQr5zFUXi4cx8YtvhxkWOPf6vvdWLN2X9OQAVoHMVTBUxn8t/pmY742NGqQXMx35pBNijHS+C/cmysWzNex+fAHvbLkxtadgH02eIiOKzlTLI3a7Mx/wdbHKbmIGbTxvq4eYTEZGFLiZej1s8GeyU9jwx2/EwhgViunC1ahiPCd+iEAVBEDSIQhQqNO4bVuAoyo9msBij5+qV4GP2FHWCVSRXFjrKQ8l+PBzvfA43a4JHoxLym4bNbImIwmejgm3SGZXopXs4XImI6FjXtWCPnDed+SS0UBpW+EaDnfo9V3KJ3TCr+lH7LWC3WDiJrbkwfzXYfUbyXaCsKthqLMsJXxKjFP6ZlFpDecwOr83Kko9RtdiKSdfGU3ij3+fZqK5FIQqCIGiQXWah3PBnpBvIhMZukaWXFZbhK79EOcr91dhqvlutOUyyJC5Du/IKnpj9bDba9e0x3SShJ5byERHl22K8MnwZNmGoHszLz260dcdjDOQ+OqmohMwNUGEVRfAYXEo4lgQOcu0NtmEmV3ImOqj+UqrxJrLpzbFM0PlXjOM5TA9ja+5f8AH7eH8saRw8dyZbk4NZTxSbYMt8ZAypIAjC/wOJIQoViqYnPoM39I2uX4EC8F20mr3hTWPwoQJzlIxW4by116UN34Lt8QdvulB9FeYd5lVGFVk8C5u0EhFl/oxtxVJq4rUVWfBr+bHTVrDnfzyG+ZhGYCOJ1NqYN2mx5zpbk/EONrQtMsL78rw+/+xwPYXXd2IrTxL3+x3HAbSrEwT2lXO82W6RCZ7LKBG13KOP+HkC8zGu2OPcx8zH+jYqWFGIgiAIGiSGKFQoVEWoUqzPVU2xPi4pUf4rVDVIRNTq3gCwLR7xIU0lenjc+IkYp8u9i2V5RERW/bGNWHEyqkr33VzDjChUcgjf4nmTtb1wxzvrN4ynmZyuyta4mwSDHZ+DJTv6hVqaMGzC5zz+GW+35nAZ1wXcrQ22ZR5/jSqfxh1igx8xBro5leeB9jLH629ejccmrxVhc1pRiIIgCBpEIQoVin6XJ4C8ONhqI44Y5XOd6O563FUecOVDOEaLaePZmqzKqCWyGvEGqyU9MYY4qYo/2JvO9mNrzM9b43GH43GNErj6M0zG6pBjw1Yxn/7+GFcc+QGORdizvCtbk/UOjvq0M8XWas8Sef12jR1PwD5zk8cDvUPxOYX1w93sJ+9tYmvqG2HcsfI0VLzLRmGrMiKiNUl9wS7y4bmKOgZ4P0UhCoIgaJBdZqHccieSTyNq4Pb0b488mB7wNqrKIMwPnFT3HFuz/kFbsKva8dw/M31sNJtfjB1awhJ5Xpz+HYzT5dqjgjGL4homvwUqUQMDXlmTGYUq0jAJr6VEj38OdOyKivbE5Xpg++zE8xIRRbfH6hDntbzDTE5XPE66O/5QTa2vTJAioiqn0CfHDu+DQQa//hJ8ipTuyVwoZPY0yUMUBEHQhihEoUKjNozNe8YrSkyjURcUYskx5bpxxVJtM+5yhk7RYz66TzE2Zn9HyXccwQdTeVrjY2qz1NYTx7E1+tmoIhst5arsyJHmYHt8eQdsk5O86eP9q95gF5njeWz8uZ7K6YH5jj52PNfyQRTmWhblKPdOi1o1s8Id+vzHqHgLbLkq1k9CVek/dDXzaboBB2mJQhQEQdAgClEoN7zIIKqyoPZMTMpDiRieqswlJaIsf4z/2Qfw3d/4Jqg33P7g9cIqT4YqiR9Ke/0aS7nimnf6V7CnzeIdZjIGo3JbV2cP2OcysWaaiGjf4wZgd/bAipILu3j3bqswVGqxLbhy9tkaB/axi7+B3XIyV8FqlYyFUnv9ZDQ/j14SphQ8GbKZ+dS+MQRsUYiCIAgaRCEKbxQFsV58Z3r5RLA9+oeCHXYYqxmIeM++HAcuVrN8Mc5Y/TOcYzL4AsbxiIgW3sKOMpYWmLNXeIWr1RwHVKfGz7nO8e6OzykoHruCF0by2Ko6lCnXFp/zin472Jo14Z3ATrjgxHzU3d/A8ViH3FKpAiIiulLnAPpMwdzQpFr8/healf7ZZumD2QGiEAVBEDSIQhQEhYFXx8M/xS1/b+ZjE4BaYtR0Puj9h9VYPaGrbFYnNueda6yrYKzPbAfm9cX24zveJYV4LWYPeQ9C/VY4qL7o4l/PeyEiqrYpCuysWo5gD1nxO1uz9lF7sLMTzJiPfhpKRP1cVHc6/LZQYQ2skrE6if0dc3rjfSMiqlUZZ7eEf8u7jY+dhfFLUYiCIAgapJZZqNA0PIbdrpMitMxPtsFYX9jgzSBZahzhPRRJFx/aGdmEuaiduPOt8IGRzflw9R8DsAdhnh+qqeJcvptqUxnVUU7TPObj1A87v4Qubwr2w3exAzURUaMknGyX5YrSLaEAcwGJiEr8UdGSp5aqExz3TE0X/An2p/b8vnwajbXWXWfdB/uXhEZsza0IN7BN+qcxn1U7MF4pClEQBEGDKEShQqOnizuwERP41L0asxQFOBj/7nKSK4vg8RjDMr1YmfkYEx42rQ6qpcsfcVVp0sYY7Lxa2KHFdS/vu9h0QQjYvym12EREJ6KxLvl8zl2wG1wfyda49YgAOygS+zfmamkd5HQF8wONO8Uyn5qf42M3Et3BbnKfz872ccHZ2T+M6wF2ZC+u/N2v4rWkeVgxn0xl2KAoREEQBA2yyyyUW9TKFSJevaLGEG/3WMIUYs1PUSFaRmjZ5lQYthB3lQ8347mKx4Iugt2zOeYYxnd2YWtS/fApedXHnd7YY7yztVksquBak+8zn2cT3NFWJgJmJ/Ld4Bs9sfa36dGpYKu7xUREH/X+A+xv9/VgPgXm+ByrNYrEv8/DHEkiouRPUSknx6HaM4rlP3YLLPE81oE8V9F/E3a7kQ9E4Y3CY81K9oY3j8QfStZK+VlMS/6PbxqrDKKK4M0F4hvjOgucQkpmCfyDVx14n2eDl9uoDZbPERF1s8UPwEVHBzIfM6WBRaYrfogWm/LSw/Etse2ZkW4B2L+Pa8fWRPTBhhYWfsnMJ/8qlj0+mISJ2V57eENev/VY7he0CH8i6+nx6ze6jR/yD5dNZZ+IXitWYTkoO4ogCMIbiihEodxSlp/MZcHtu2X4k/kRbhYYaBnInu2IpzHiQohylH0Wz13xYIcP5hsxahlbjY3YOt+kKW/ukHPDDuxHE/hIznpf4nEMsvA5WUbw9BiDuajKYg9hGkt6TVSMRET65viY/SFj5hPbCZWxcRTe79qdMUWIiOjPR9jd1bgSbpgYXOfty9TQx9X9fENNbewhClEQBEGDpN0I5ZayqMGahxbg4PrG25mP9d0pYN9dh7Gms+G+TCKOuTEcbANTngydF48NE4LnYyJzfbfHbE2/EExAbtTzAdgPt9dka/QUcXQ4y5T7dEFlqcbcIh+hyiQi8lNSljI80dZP5R8fhcoroq3pgkEirst1RlX5viNPzE7IVkYr/IRlhFlvpbI1MXVRnWr7RXHqJrYaE4UoCIKgQWKIQoVi3v1+8Ib+ovZBkCieq/guc9i06eAz+94A8PnjGW+emhaMzRF0VWlEREUuGOdy+B2bLmRU5XrEKBUvL8MD/15clY87rTYeB7AHrePNKHxXYtrK0554/QUW/HPA5Twqtz9+wPGg9TdhaR8RUff+18E+cIOX1FW+gs87vhUqTz1LHpu0uohqL00Re1Wu8OuP7os7/4Pq3mY++69gCaMoREEQBA2iEIUKzdOoKvAGr+oSW2rcse6RebAm/4aWpqzVMGZYdS/XFtkOGCuzPYDxwD+CL7E11S5ibNID0+QoqhPfTc12QSWkU8SfokkM5kS6bXoIduQ2niSeF4HnKlZChi5+uGtORDTOHZPRdwzuxnyCx2F+oO9WbO0V35SX2KXWVVSj8hyrXNCi7ZTbkObBfQKXYLxYFKIgCIIGUYjCG4+6++i960P8uyH/HwkbhAOL6i+ZwHwyW2LcztY6E+y0m7xEzfwpnmvd3PVgD7/xPlszvOYNsM9Nacl8IrtjU4gSR4xvmt7DChMiorxKeC3De2Hlyvb7ONqUiMjmpNKcohJXqw69cZRCVTNs4x83hO94/375INhqXqWhlkH1t77HsjzfRbyNW54H3gdRiIIgCBpEIQpvFA+fOrM3fM2q0aAkOrZfCj459lpabs3CpqbphVxh3d1YB+xmH+MA+XN7+BhPNe5Vsx/WLof8xNvgJzfB+JqNA2+nb/slXl98U4zjGXbkFTAZ2bgrnh+H+Y1WwbzGO8tVub3uWczH2BivNyMR8zWNo3lbsXGDjoG9dzHGJs3ieKXN2TOzSo0XX43wlEoVQRAEbYhCFN4ovL9axd7wTz7DWJPnz6gQfZbxAfPB01Bx1XGPZj65XVLBPhCKu8r1Ln/A1txvvQ3smufHgl2UzatD/NZmgB00lY8Utb6NKle3OyrCTi68auZCLOYzxkdhhxmjWK7kgsbwOmqVdmPGgB0zFNWd5VleaeNwFYvFddJReWbVwua1RESR/RX7g09KVYyiEAVBEDSIQhQqFBNuD4U39MknfvB3nVCuPkJmo0Ls1GoxHCPPho/1TPFFpTZh9CHmsz0Cd2Gz81FRFRRwtaejg/+Py+v9AvayKZinqO1aMnx5pYdaZDyjHTZyXb8Xm9cSEdkEYgVJ5hAcpWB42JqtSa6N119syftEdqoVCHbMYNxVznPDfolERNHtcPe6yAjPM7v/r2zNqi3YF7LdkD+Zz80E7OAjClEQBEGDKEShQuO+40t4g0cM4zuPah6ix2GM2x3rtoYdd/J7mAf3/FNeY5ztj0rHLAb/17I7YV4iEZHOXawOya+BuYwdvXmvwJC52AEnrjHfFffrioOoWtmEgn2iFh8p2vYePqcfj3TAa3Pg6k/XGB+ztOT3xeFLvL6UeeiTGGXN1jidVuqfm+LL6HiNf46leeEueKYnv143TxxeJQpREARBgyhE4bXkZXXD/uzuW3Cc7GKunvw/bwB2h8XYj2/fnnZsjTrAqG2He8zn2m84DtSzO3alOexznK2ZEovdYewMUEUWlXAN85kdjhStu20S83E9iSosrgXGUnMq85kkKpUe4O1P68pzDBu44lCs+0f9mE+OE3aydjmN97LIkL/MRimo7nJtMR67a9kKtsbLtfS6dRVRiIIgCBpEIQpvFHUn8XpW/9mYO+d3eRjYXpMwzkRE9PudE6Wea18mdm05kNgQ7GWuh9matidw1GeNeU/Bju+Ns0WIiFJq4lPS4aEyUoWlzw7MXdRfzYfChMTbg93LG7v1nPmxGVuTpsxZMbXLZj49PB6B/dtZ7EloEs91WsAUrOn2OYM5nLbneCbA7W2YPXAq3I+99p09gqTbjSAIgjZEIQrlllWBndmbd1r1U1h1shIrUzwaYIyLiCgiHneDC3Mxr8/xNM8XTPFFLeHeOpL5GOphrKxwLFaQPPmcD4fXC8bHdJVRLTpaQn19BmPM8/DeVsxHVYi6iorcPB4VGBHR2O8mgl1cH1VlbiKv37Z3w8411kv5c8yoijmF6e54cT+MXcvWDL6Is08MolARFprxzzGfOthVZ7Xnfuaj1rGLQhQEQdAgU/eEcoO685xSyCfQ+f66CHzCps8HBdDoj9lMSnh+g7Ir+hPckS0w4zl6efYosWLSuY/lTnwsqyPmxRXk8kl9pFRgeLWLALv4Q16nfCoR+x8WeHC1VKj0/dNR9l8/HzWarbGehXOZ08/gpDu/EzzuOHAv1mvvJd4xe8EXP4AdkofHzSjms5xNH+Fj6q64ZQjXdicnrYFnWRz3e6k/h0UhCoIgaJAYolBuKUuuoqoIM3P4bqTeDVRyebZKPa6WSXcmAZjHV3VHGPN5PFkZmafIjzZt7rM1Fy/UxvP4poL9vs81tua7n3qAnW/N/6fVnWfdApSIBZY8OGnmrdQuH7IGO7cP/p2IyGIv3ssUP6653H/DOGNsW+yiU8QFImX6YkecqgfxuCnV+I/dDG980pHjZpaalyg/mYUKTXaekoh9l/+0zbXDDxA9D0yGLkjimwekfOaEjeHpMI43cVMlqgfa95N4y6oSZXTpWx6YdL17WXe2Zv18HGcwZv845lOifA8YK/1gc534B2Jblydgn3bGhrY5ybxRRmYn/BDy3cC/TJ4MsQa7yBzvi/dO3m4ttjmm8yQ0xGPo101layL7Liz1A1BtGCw/mQVBEDTIT2ahQuG2bRm8oYc3uQp/PzefD2Aq+hDl0pU6B8D22YlDp4iIPuqJ7bO2BvHj0m1MzM6zQRX24wDeTHWRJ5YRml3E5OhKhlxx2RhiCd1v55oyH2MPTJlpUAVTUpIGcLUX3wN/8hsNwrGjtiY86Tp6N665vWAT8+nZoCvYS65hgvqQbZicTkRUpR2mSz294wx26IxpTA167/sC3gtP3p4nDWIFQRDKiihEodzS/ux09uZtZIulbsd/bAH2kWnL2HHe+XQG2NdWbmY+KrVXY/uvNeO/ZT4re78F9rMlGLJ3WciPm+eASs04HFNbAmfy5qnm9qgQ9XV5PDDtGarVEj28dba3+cAodeBVtgM+YPeA1wg+H4aq0XUZF2VRHbHFWZO+uLl08QmOLiAiMjDEc5mexfSjgI1cIb4IohAFQRA0iEIUyg1bg1vDm3WM7yWmCjxXrwQfS6VjWGZbHvd63PZHsNUh6IXteXrJh34XwV73oB3zMTHCnVG7VcpudRH/34tpjQqxVX9/sK/vqs/W5FTG4xRU4SM5T3T4Buz+384EW5/fFkr3RVXmfAbvpdqSi4goYiSqU+9h/szH9xa27gqcXgvs6NZ8Vz/HCc/1Z+/VYDs4x4hCFARBeJmIQhTKDZP834U369HgWszHIBgVVvCCqaAcak/j7b/S/VB9mFfGPMS8PJ6ua34Bmxb8Pms582l5djLY+jGYE6mXx0WNriLuclwwR6/yFb5GbY6g1ySF+ZgZ4YHTL1YG2yiFfw4UmOO5bLvEgB2XirFAIqLDTTH+OrXNYObzZIwL2PpZeJ7hQ06xNTt2dQZbbXLx8Kup7Mb0uDgJntSxNt/ILrMgCEJZkUoVodzwTf2f4Rve3Zi3/1pP7f7yGMZJXAnpBeAOq/2gdLBTdriyNTeXYn7d22F9mY9uEsbKiqpiBUYXX2yUSkR08hTmIepnoGZJ5v0sqE93LOe7tIrnIab3xzzEke9hg9sbKUqZIRGF7fIBOz4NFaHVUd5oolorRTlfO8J8Gt95G+ykMCzdOzeKX3/eQHzdQj8pfVe5LIpQRRSiIAiCBokhCuUGtZmDtqFT6ogA3QJ8fxv3x2oLIqLEFFQ+bptRJ0SM4/8jbTyxzjfys2rMJ74Jdim4NRkbn/od5xUwOpn4o02NM9Zv8ZituXsBz51vx3d/DZ/jcas2w8qPsHtY+UFEZJyI98EQhTPl8xAimSTivdLP5ffOLBZ33w2vB4Fd0NiXrUmujsXYARtQIZal0UdZfEQhCoIgaJAYovBKKIvaU1FjT7d7cB+L3rFg5+3E5qOFu3B3lYjINQZ3YMP6Y+yvOJsrrmtH6oCd34tXhzjWwgara5JrgN3Uj7cMe3gQx3Y6n0NZ5tE5ia159gCFz9SF+5jP0nXvgR0ahTXS1b8OZ2sC57iDXaKDsVbXJVgnTkT0eCt2xKk+iz/HkG8wJmtXGVue5dhxndZ0KOYzum9agaMhfPuwNecc2UOlIgpREARBg8QQhXKLz9JV7M1bKQgfSsS571S/Icb+iIjun8fd1FmDfgV77fqBbE1qLVSNOqZcRa5pvgfsGbfxOAZ3+S5tgQVe/9s9cIDUvkDchSYisjuElR3aFFYxil7yGYCxyNuP3dkaHX1UvfU8sEOO/yO+Mz23LXauWXq8H/Px+QzVXuJIfE65NvzHQuASnmf4byAKURAEQYPEEIXXEm07gl5nR4FtWpMPafp8MKq7a1nYOeWnm9j9hojIuAjFx5NcjDMWcCFHOnmoJSa1Pst8Zm8bCbZjIKrI6EG8t+G1tjgOtOkR7A14tdcqtuZYPXyOS0/0Yz7mkXi9kWk2YJ/ttIat6fYT1jsHmeF90c3memprOI5ANXDOYj6pA7Ee27BfAtj+Xb96KWrwReLUohAFQRA0SAxReC0ZeHU8e2P+0mIzfMNP9X+H+Zze0QzsvBZYoWH5O5d7+ZYoHEo6Yi1w7gNrtkanGtY76zziSXlVP8dd2OlPHoI97uIItqamZzTYQX+647Xpa6m0ycHr95z/J/PRtcJZMnZHUa0+f5/vvgfOwB6Kuun4g9Ltd8wnJCIKf0+xu25jPtW2Y/5l1ZOo9M+enVVqF6NKvtgn8naPJdLtRhAE4WUiClF4LdjzpBG8EQd73yr1G7/BGL7LnKRMZ/uuPQ5FH3d9ODtOC89QsH9yw16H3rvHszXeDXDH9fEjF+bTo2kA2GeONgS7wILnLlpEoEYxSkWf2Qt+YmvmbBkJdr4V/5/Or4L3xcQK66prOWL+JhGRmT7mZwbsxHxBdaediOjbTni/l48aynyiOuCuuD4PpTJGjzgG9sUkzAw42GqjKERBEISXiShE4bXEe+9i9sZc3PAg2G+b807WnqfeB1s/GmtgH4/kU+A6DcE1O37C7tJtd+FuKxGRxyzsMBO6shnzUSfdWe3BOGNMN66w6ntHgh2+D5VQZgve2rooBZ+j1SM+H8UyEs91YcsWsKv9yOuqCxxRIap11tW/xnpoIqKQiVXBVvs7EhEVWOJL63AT/55ajeu0Il/cre7rew/slfX2iUIUBEF4mYhCFMot7utWsjfvB+3Pge1rjLGxmSffZcdxOYWHyRyNytN4F/brIyJy+TgE7DvXeLcbi0gULU2GY4XGpSN8Psqe0Zhn+N6GaWAbpvH/15S6GGfs2OgB82lnjR1l5p4fAHY1bx5DDAnEDjiT2mMPxUPTOrE1WVWwJCbLiQs3106ogk+2WwNOXit4bFjb3OXSkDxEQRCEf4AoROGVcD4Cv73nP+kHf7/YaTn7Nq//ISqHbEf+hZ9vpezc2mOOm8kDPtGtQT9UVAntcI1eJWu2Jq2lO9gWwTyeGTIClaVBJl5vgS+PB5bEYw9FtSeh2m+QiEgPN4yp0qN05pPhifmXMZ3wPlX/hq+JbYczoFMbYkDQbyLv+J30dl206/DrrXoC45nJ1XHWTHo1HlsN74cxz7KovRdBSveEv8WL/AzRRjt3XHfRvfQ1Bpn4zzV3CG9zteYrbBFmPfQ52JHRPD3m+WjsExW8DhOSdXL4JoVJHH5QuU+PYz6hF/AD0aUNpupEJmD5HBFRidIQtttb18EO7GHH1uiY4WCt1I38h5/eJmztP77FebC/ze3I1lSupjTTjcAPyIn37rA1qyLw+hwN+K7KkxRPsIMWlt64Yfzte/Dib36B1l5lQX4yC4IgaJCfzMJrgfuOL+GNaGDMfzblp+DPSVN73jjA2BATkNOCUYXpufKfqfnpmLZiHqJsDNRUfpMSkdWfeC3p3jzJ2jge9UbNnsFg3/4TU2qIiEyUNQXm+P9Z4s2fs77Spisnw4j5dKqBmyrXot3BNj2MpX1ERIaZeNyi0ai2rWbjPSAiCh6DSnRhhwPMZ1c0piiFBqBqf/IujjIl+vd+IrPz/BcnEQRBKA+IQhReCX0uTYQ33t1HbvD3yHEz+abKeNxUKemVrLqQ/gFUhLm2pQsLvTZ4nA98roC9M7IJW5N7BJsh5Drw4+Y6oVrVT8GQfaVAvqbqaCWdJxTvi6klV6sGZzHmSVr+pf3nbAR7Xyau+XY8b4L73Q84FOvdOTPAdhqLJY9ERPevYSsy80h+/1MbKAnfeRijjfhwxn+iBrUhClEQBEGDKEThpfMiO9FqMq62RNwuDT8Hn0G7z7DjrN2KCceefVHFhB32YmuynDFWZh2Ep7Z5h5eo0ee4m5pYj6fzqATMQpXW6t4A5pOei/G/jASlXVmxlkRnj0SwC7bzVl7ZjspI0Y4YD8y9yHevs6oWgW39EI+Rxnv4km/9p2Cnb3BlPlf3oQL02LUUDhT+3mxRiIIgCK8aUYjCK+FsuC+88Sbdfwf+XnSDl8tZtsG8uLzDPHA39CMsL9sa2BId7vNGrm5HMKk6xxl3Sp/X5um6+ZXw/8Y0moua9OrKTrkhKlHDWGXyExHpZSvqNAhVms9Mngx9MxobKrzrc5v57A3FQU5r6uwFe8xl3qzWv+MGsLt+huMMMly5nsrxxaT25S32M59fE7ENWlga5jfe7PalKERBEIRXjShE4W/xIvHBfpcnsDfZAe9TYA+PbAP2wx9qsuPoKEfR5R3s6eZSbO/V8HNsa5VSh+cLlhjhY2ahSh6iFz+RtQO29mpSJZL53FuNZWzP6+Gt0svlt65aOxzs/mwvVnXkOPL/16APeEszFb+tE8A2Vubdb5iCw62IiCasm6iswXMn1eXXYq40uL23llehuG1ZDgsjx/KMgleFKERBEAQNohCFf51Gf8xmb7Jb3ZeCKmg0CneZm0zkdbJR2dZg3wvndcm6z1HdOZ9H9Wd6GhuLEhHlHMbC2My9VcBO1tKgwP0IqsbPNvPW/nGFmOu3txuOQPX5NYatuba2MdjZDiie9HkaIqvxNk3kVT79lqEin1IpAuyBobyVV/JCzIE0uoHD7c2O8YqYh2eUNmhaPl4KlaYWoYPniEIUBEF43RCFKPwjtA2UX56MuX6f1jjOFEC9o3NhnbcN5sXdP+nLzrVw6C6w98U3Zj5p+ZgPeKr6EbC79xjC1uRUwV3lEj283JQPMF5IRGTzLeYHJtbnO8b2/qgijWZgE9aEA7g7TESUUxlvZ5EiwtQWYkREuQ64E135qpbqkAFYA61zD3fbiw3454DXVuzOE/oBXq/raT4dKqkW1jc3HMkV+bbG2+ECj4XVgpP38Hwgu8yCIAivGumHKLx0VEW4/XFzJj/uNEJFuCoZd1OjgnknmJ2xzcFOyOJD50t+tgd76IftwM525Wt0ivHyojooTVmv8ZxI4+eoGqcNO8J8drZvCvbjx05g23TDe0BEVJCGalU/AhWXTj3eiNZKqWU2/+AZ87GerijCgKtgp/zO7zdtQ6GWp9Rmn7nAK0r8DiyEm6mqQSKiMbeGg8/WRq9OEaqIQhQEQdAgMUThH6GOAiDi3bC1oXauUYeVW4/kKufpBYxhua++z3web8RuKwZhGFP0/Ab7AhIRtb+AOYT7I7GqI/EpV4jmYfjjKtOXd4YO7/Ed2AF5WMXR/8THbM0PnXGNgQ7uGDcywnghEZHfoY/A1jHju8xqf0k3nOtETz7kXcH1YzCA2bcLdu9eXFmZH0pEtX+cBLZRda5oH/Zd+NooQhVRiIIgCBpEIQr/Or6fr2ZvsvxqKAnVWFnVUzzhrsAMVVny2EzucwfVnLESpsttz3eMdf0xvmaoiJqvp25la5ZHdgP7SSgf8qGXgaor4J01YNc5g9UjRETVPsCBV89mNgI7155X2oS+gx2ma33Dj5tvjS+B9zasCw8ZwzvkmMShkLN7gCo4qQYOhyIiur+q9PkorzOiEAVBEDTILrPw0vns7lsgR3JdmzIf/WhUhGZKy8HoVry/YJ6ijmx/s2Y+DpGoLDNcMQ52qhmf1/FT9dpg71/SBewupryWea9ZCthxT3jfvyxXjPd1mzIZ7JJO/NdZ5CxUhJYR6NNj4A22psksrNd2HxXOfDLz8T507+2P5w1qxdY0bIO9DQPjsb4817bi/boUhSgIgqBBYojC32JVYGd4w0yrforFjNSd5zZ8OBu1HTcW7KiO+N1cYs1V2cRG58Deu6wr87EJQOVWvBrjjGu8+CznvtfHg210G3MV8xrwSXcm1zFf8O6nG5lP9W8xltexF/YpPBbIO/pQCsblJnY8CfbpRD+2JOghqtMSff4/bVgJlXNBPCpwa/dUtiY9A+c9h72LeYcjbr7PThSSinmg8715fqaquP+riXplQRSiIAiCBlGIwkunzhTcVc5y5u+xlQN+BPtIcn2w43N5Z+u4THzMwiiP+RQvxy7akX1wp7dVAz7q7tJdVF16magTXOtiDTIRUcQT3JXVy+R5fD6fYx1vncuoNFMLeJx0ozNO/DuTg7G/6ZvHsDUmz/H+Jrbm6tr4KSrPr4duB7ueUQJb023LJ+yx/0ueH69l7umHu+TrG+x+bdRfWRCFKAiCoEEUovC3ULvUZD604U7KW0q/Gs/982/+A9iDnvQG29aIx+3u/VAL7Aw35kImCShI8pWRxbYPeKVH0QdKsuIOjIMVGnGR89OClWC/880M5lOgiFy1S3W+JVtCBRZ48+z90Y5pz/MQ9awwP3BYTV5BcrUuKsSkD7AuXNu9dG+B1UInqh8Fu6WWqYHXunxdrhShiihEQRAEDaIQhX9E9d8+Z28g2x24A5trzeNrGVVRSORWRZUzrTl2eCYiWne/LdgO+3kMTn8cVmCcr3UQbG2doR8noSJ82xNz9H7Z2oGtsQ7FOF3BpCTmk3UMq1ccbqHqza/EKz2SPkAfs19RRj7HUOv/fy2P8F4WmXCRZtYrDuzoWKzoqe0ZzdYcbb3ub6u9glgveD8YVAktV4pRPhCFf4S25g5rojqDnbqY/x47ux2bGHgcwc2CGl/w9vpp3+EGQ/7PvNws1xb//4w74hD3osN8IHuBGa4paZ0KtqE+b5bgOAbr+36/c4L5eO/ChGnfjfickpvjqAIioiIDvBbzWPzgbfgVHzF6rwG+BFnHPZlP7q94r1LaYhpO+JBXNxz+dUJ+MguCIGgQhSj8I7SNEFB/lgY848OgKv+Gau/K2m/BrrGBNyjoPgDbTx24x38/mgXjcdVmCEU2PCXFuQomc1+ucwDsnk16sjUdj2P6zgb/tszH3AJVWE6gNdgOt/kGSVINDC+ooQQq5BpGpxDFXbXpAcwneBOWJ1b3QLV6vO1aPi50+9fw2rarEQx//871AjtPefuJrCIKURAEQYMoROF/vMjAqLof89Zema5K6kiAlveY8lCskk7SvSEfThT+gQfYlTbGMZ/4eRg/i2+MijHPhl9LpUdop/VQNj/S+LhNSwcsCbT8iefQxDVDvWGj9LNN78Pbl5mc5SMO/i+O5/nYgU77Ma742/zOzCeuCV6LBfbEpYAN0/62stP2fnmdyvBeBFGIgiAIGkQhCv+j4bE57M1wu8eSvxwob5jF42DpQ9PB/qnuduYzq/cIsHVysQwvZR3/rs45hjulmc146RjFYCeJqT0xmXjjTkwAJyLKccJk7Ub1noAduwrHEhARbVi1FuxR94czH6t1qBoj+mJ80NYNY5dERNVtUfU+746C69gjHrfr+KgP2Lo6/H/awgDjmUEJeC+DBixgym7C7aFwoI0Nd5Zr9VcWRCEKgiBoEIX4BqHGfMoS7/n6UTdYo23ovIrH7qWwxulXnoCcXB3VkmVrTKju58JjiHfTcbf6WqAX81EHO6m0mTCWPZbQAK/F49dUsK024rUREQ2yvwX27P3vMZ+lg3aBfSHdF+w/zmAzWCKiInNU3GH9cfe9lZZyufh7Sj4mF+0UMnwTf/D/0CxgIHvsZrcvK7wiVBGFKAiCoEEUovA/3DesYG8Gv1pY4K/GpwIDeBWKQToKC5O6PFaWmaUMYI/EMjyHW1zmRHfFx0zDDZjPljHrwZ64YiLYubxQhRp2w23m0DRb7qTgVwnbZY1zOM98Uouxwer8L94HO6k+/98ze4oaxTQen7NePl+T4YoKV21oQUT0eN4/H/70Ir8wyhuiEAVBEDSIQhT+ksYjcFf5uVI3a+jC23QZXcS+V9XeCWY+KXNw6HzxPGyOkLHDma0Z99lvYJ9L4e30H+6qgcdxx+ut0xR3kImIUpagyn1eB2OeAVNQdRIRTY7B9lnhb/MxpBHv4nPI8cWdXp8NvGqmwBLP7bQoFGz/I/j8iIjMWmG9dt5Je+bTZcQ1sFfW21fh1N3LQBSiIAiCBlGIFZSyVBG47/wSfEwC+TQo20fY6eV5LX3l77zh6vivfgF7ZTBvuWW7EuNrz2tiDLGgkzItnojynmBeX/WmfNxm8GWsZsl3wOu3CORxx3szcECUz07sUmODXfGJiKhQy+AsleT6eG90zVEROv/CryWqCwq3ZvUeg73SlQ9t6jt/JtgWQ3krr9hUvHfa8g5V3oSYoYooREEQBA0yqP4NotWpT+AbX+c55q8FLuE7ke4/fQVr7M4r+YPXIth5vtjzDtjFRvxXSFpffCx0MKq0OjffZWsK7VBhPXzG+wn6bcGJ9yXbUaUVbschVERECxMxLmfgiSMPEixQzRIRne6xCuyJPT9gPim1cLvX/Baq4CJDrq5ZjfcizLVsMXAqWxL5PdYhu21bxm544+ph/Fyl8CYoQhVRiIIgCBokhlhBKEu850hYbfD5ZBvmxdkG8s7QiXXwR4RBA8wpLLmMreiJiOweoJKLb8hjZUUm+L7z+OIO/r0J302N6IWBO9185kJT3zoM9rawlmA/T+BdaVr64c5zynuo7HK38v+RuLNYNVNQh3euMTbG+6DWdA84NomtMQtHBZ5TGc8dNp13pfFYsxKcwqdMf+OU3ctCFKIgCIIGUYgVhKBnTvBCTgp9m/l4W2AvPbV7Scc2S9ib4cl7mBdn+hQVY44Lj4P1aBIA9rFr9ZhPiT6eSs8a5V5RJleV9lfx3FVHhzCf2CxUgMbLUcHGf4S5gEREuWGYN1lkitUhd3qvYWuGtsEYZ+TbPG+yWHkKq0Zuw/OW8Oc4/ehQsA1TUbMY1OdVPw/6LILXUe1SQ/RmdKp5GYhCFARB0CC7zBUEP9cYUACRNxcxlXCy3Rrw8d73BfiU9MHxoUREBpWU7tFW+B1aySKbrbm0syHYmz/eynxWvTsY7AILVKJpHvytaRmJPROLS7joWe27F+zBw8aDrauoQSKiJ0M2g734OVbAnMjm6i9wGlamlJjxgOamNjvAnr5tNNjdBuKMGCIi15OouCMHYlw3WFGD2uhVKaA0F+H/gShEQRAEDRJDfIOoOwnnnzQYij0H/X/EyWxERPYDsdvNk/u4u1q/Ia8NjvoWO0xrG65u9RiFTnYVtO39+Y532ijMD8zM4OUioR1/ALvWNzi9L8udH9flJJ47qjP+T3SorwxdIaKY8ViLrZvKd5kDF2FrHYNnOJvFiodAqRg3menOVtxVrnV4PvuHVWOIwosjClEQBEGDKMRyyLqgDuxF2/AI5wJrq1Wt9gUqRM9d2An6ySIeQyxMwuoK3UoYxytK592wdUxQhRkYc1VmeAuny40acRzs9ef45DiXM/i0LW48ZT6hH2Its9t87PKyOfIyW9PlCvZMdPoZn1OqN49n9huJs0123G3KfPTiUBGqFTCPWuxka2quQ0Wb7YWxycZ+vH77lxabRSG+JEQhCoIgaBCFWA7IjHGDF+n9yG7M58Z9jNtZBnFVo1Z2VL6GHWXC3uZVHPVaY7eVe2dwLkiBFe9s7XoCd0qHreIdWpb+0Q/sYjNc43hBCaYRkUU4TtmLb8YVrcuhGLBzvDGOF9OK5/7V64j9GvV18DntdD/P1vh+jx1xJvY/xnyOjGkHdtgApZbZnN+7yLEzQe01PfEZvPY3un4lavBfRD4QyyHVfuEpNdbm+GGR+idvYlBoist+fGsD2PtTmrA1aQX4T/xoYy2wM/rgz0AiIk87bPb6fCsfM2AWh2VtiXXx52WWK/+wUD6nqFnzIOaTnIeNGJ5cx3MX2PKf777e+CEaEuAKdr+2N9malVWw1LCbB//JnDoQd5OSa+JnmUVtvE9ERP49l/zlB15FHA7/OiE/mQVBEDSIQqwgqAX+9ne4T7EeColk7PVAlbkQooRGuEbXDRO1dbQMRf+9KY68/CGlOfM58EtrsN07RoAd85s7W5NWC1Vl1SNcGGWMwTDAWG/cRIktsGZrdp1sA7aqRO3q4EApIiI95XnrbeDTq9Rmuvm1MYk9dPAcUXavGaIQBUEQNEjp3ismJcaFSaxKTlHY8HPLcvCxDNbysmGesNZk6BIHbGxgboH2dwOx+QAR0ZC72CLMfhkmQxcZ8c2Pj+2xsUTCTh5DdHgH43aGuripYtsHG70SEVXuhGk2kft4InleFLbuGt8I2+nXvNaOrSmujKlENpcwnpmpNNIlImr01n2wn2bzNmg5Loq6jsZ4bFK0M3vtf0zHtmfTqp8SFfkfIgpREARBg8QQXzHTA95mL8ByR3+w2XAopa0/EZGHC46iNPrYSHWhY2f2g93uQT+wo+7ylvz6bliStqgeNmBdvYC3+o/vjvk9jTwjmU/0Nz5gp7+bDnZmIk+p8ZuqlNB5V2U+0QvRzs7m90GlJA5Vr3Ei6gT7u3xcaL4lKuPkGlzI6ebjY7neqEQjhn8m6u81QxSiIAiCBlGI/zEbg9rBDZ/gd56phBYnPwWfxFsYwzJO4sIivQaqGF0Tnm9XnIuqRjcdY5Gb+vAY4q/JjcAOWF8P7IQ2XD21rIENH66FeTCf0A7YhKH6ZixZ08e0SiIiym+EarWj52Pmc3lPA1zTFPMk8xP4wCjHy3g/v1iC7cq2xmFZJBHRjUBPsCPf/5QP6Nq0Al7Hqj5YKnmx03JRiK8ZohAFQRA0iEJ8xYz+cyR7AW7/UAdsPQw9kVkcV39qeZxaGqcN80j8PlQHGhER9e2GTUyP78GcwvtTcHwoEdGYZzjYaavrFeajNjEoUb6aa3XHcjoiolv+WJ5o68+/zwv7Yot9vaO4+6veSyIi21EY43Q3TwZ7ozNv5KrGdb2Wr2I379y7y8Gu6hIrivA1RxSiIAiCBslDfImkx7gylWDp9OwvVcHph9XZY9ZKRUmekuJWostftv1DO+J5m/HvuvRmSmDuGebFGabxS720Cmt0nXZeBdvDfSxbY+uPscpJ43h7/WJl89dIKetNb89rpEu2oDJeM5ePJhjzPbbyyvfFshO9PP4cO1fCJrh2BnjuZjNxDAER0U2cDkCFDvw5znjWB+x9LsxFeM0QhSgIgqBBFOJLZHlSQ/bY7os42lOtX23oE8HW3I/GHL1Zg34FOzKP1822t8AcvXmTuHLTKcZ8O8d92C3G8zjWKRMR3Ut2Avtxm8ZgB/XEjjlERO0ufwz2tTi+y1yii2LavCfuwMbq4e42EdGx9ivA/vDDyczHYBzGEIvz8S2el4yqmIho98UWeG0WqEQtHLlumOr/DjyByBF7JT5YARCFKAiCoEF2mctIWfrQ1Ts6l/lkPLIB+6Pef4C97wve7DXDFb+neg/Bji26WjrMHInAPoXpSbzSwzAWm6MWKXG84CFc7dX44SNcY4LnLjbg12IVhDHEzKrcR88Tcwrd7XBnNy2PD5Ay0sN650Eut/lxCWOGq+9jbNVxBz+u7mRUpxc6roDX1XP1SvYEzLywq859GfRUIRCFKAiCoEEUYhk5H8EVYjv30jsVtz87HdaZGeBuZMhZrHggIiqugerJ4iSqvZ6TLrI1+x5jhQbd5wPZHW/guYeuOQr2uk0D2BrzHnFg5+3Fqhnbe1iDTESU7oPnrnQhgvk8+gK3XFX1aloHY4FEROmh1mB7HOE7u7m2eJykGko3ntp899rCFLv+3Oq+9G+rvdBnVdj7w8tV8g7LG6IQBUEQNLyRCvFF5lL0uvQxW3P/IXZbsQrkm/YsfuaEaqTaJN4JJmgB7jI3aoC1wXZGfDf4dGg1sB0rcSWU/Ysj2EkNMSanDmwnIkp3Q4XldAZjfcX3+FwT+6vWYAcm8fku73vheNCVp3qCbeTEn6PuHVSeTp2eMZ+ejtin8I/R2A3bd30gW3P2F9w5V4fZh/fZwq9F5phUSEQhCoIgaBCFqOFlfOO3fGsFO67OeJzHkbcTVVqaNz9t5T9RocQ1RZWW78JjZ/c74w5xk2+nMR/XL7DKJOGQH9gz/E6xNZ8fwu7XlqH4d4soXldd+DGWnVyuc4D5/J6Nu70fXxkCttUNvhvsPxfrpnsE92A+xTOwrMd8De4gr3E7yNa0/WUG2OFTpov6e0MRhSgIgqBBKlXKiN+C1aVKafeHz9lj4VexC7WOO/4935rPH640E+OKiYn2YNsZc4VY59cpYBvUymQ+xWdw3nCVSfiU3jvF5wSvUUKEH32CVTM2evw8y2YNA3vV53wn/fdJ7cHu9vVDsENdeDWOz04cDl9oWcR8TLvgW/pw1W/B1tZxxtCVz7kW3kxEIQqCIGh4I2OIZeHta+PgxkRlWDOf5MsYD/TYFc18Wh5CiXV0CSoj90la+v5dwNheg7bokz6Gq6cCe8xVjGnBa3YNsbiCig3R9h3Ir+X+aV+wbZthXmL0M1u2xv4KqjTTIbHMJ+4a1kjr4eY7FZrx96VxIoo7m2DerTvDFc+t3x9nzXzsdY6tGeZzXWKGAhGJQhQEQfgfb6RCHHxtLHvS1x5gN2bLIKx40GvP42tZOVgM7DUpjvlUPoQ9CH+oegnsXRlcYc07PgjPrfTw82zI8+/0R+N3m8mObObzs+cJsKudGIfHSMDnTERkFo3nTvfDuF3lK1xceXyESnO3B1dlv2Zagj3jEu5mux7h39X5YzEHsvCAPfO5tWgT2KuSMX45o8YJUYPC/5M38gPRa88S9qTVtlx+83ATpciU36fgUfjP53FkDD9ZkfL/pzRD0Mnj//iV7uNjFk8xtSV5HN/IyA7FAe16Ofz/3ioE7cRm+OFmHM/32Fp1vwv2af+a6KDH74uhchzPL+8xHx13LN3ruR9Tgg5M7MLWPOuCv/ENU/lzfDAJU3MkgVr4O8hPZkEQBA1vpEJ0X8fbOZE+PmSYhN8VBrWVHQkiKrptDXaeLU+hcT2JKkwdBvXLO+3YmifvYXKxQQaKHG2pOkXm+Fjz2iHMxz8GVVl7d/S5cEBpEEFEOU54/dW/wp/rKa35sPj5i3HE6JdTRjCf6CGYOtTRG39mX4niqToPmu0C22sfb+1v7Iolix3dcFTp+ga7RTEK/09EIQqCIGh4IxVi9Tk8ydomCJWQ3odY8pV0GtNEiIgyPUtvAtBh+Giwn3XGONiALtjkgIjo0BEc9VlcDRsdvFf9FltzemFr9phKbEsUR9/2wyFNY459wNaYOGG88j0fPHcxccG17VYrsPWMeXmf1XllwFUGviRZVfh3tXc/VLRTXHip4eZYTGva03yLKEKhzIhCFARB0PBGKMRuFybDk3y+3Y35qDuueln4XWHmzWOIVSyxOerTs/y4qoCq+geu6bIdd1eJiI5M74DXNg5Td3JzlIxqIjIIVhKxtXzVObWKAtvbEpOWLx6rz9ZUbhEDdkExHviKlsYNHsdRafps4woxqoMp2GrS+L01U5my89i1FF7H8Pdmi/oTXiqiEAVBEDSUe4U48c4Q9gTUncSan2HM0PYhL/nymoeNQ59N8wI7qRYqGiKi5PpKcwFDvvtr44CKMDkO8wV9tyg1a0RU8CXKJaPBGENsfIYngB/ZhI1QqUcy83F8H5tPBK1CRWt1nbfcsg7F3eC0j3AXN+seDtEiIip0w+cU2vEH5tMvpCteywXcVc6rwlVl5OhPRBEK/yqiEAVBEDSU+/Zf3zj9yR7rd3kCKMKPRuIQ92929WVrVlY+C/aUyliRkVKbqz+zyqjcqtklMJ+0fIztpaWhosq156psQtXDYG/di+rv0vRmbI2ekg5ousWK+ZTkYAzRZz0q5bABylxSIvJ6NwKvNxOPGzB7GlNtagNeVQ0SER1uvR7WFfvgmpb3+MArQfi3EYUoCIKgodzHELXhvXcxPKnJdVH93cvEig0ioqh3cBBS2AhnsPO9cKeXiMjkAaq/T0btYz6rNmDTghxHvN/uc3geYthXmIfodAVjlWZBvBFt4DRsCeb7Pb/e4LGoRtWaY59WEWzNwyBsKkv6ilIu4WE9mz/xuLc/38R81Brjekfnwo0J6LX4heKFqjqVWmbh7yAKURAEQcNrrRD/jHRjF9fYLRK+8T1X87pkl9q4C2s0H1tNJdfAZqpERGaDsYlp1h5s/Z9ry4VGZo08fKCAf7+c7roa7K6XPwa70mkeQxw47TTYezd0wvO6syXk8RkqzcxBTZlPii8OqyqwxFt3892VbE3rDTiASVeZXmDWGSt6iIhudP1KVJlQLhGFKAiCoOG13mVuaMQrMlQmd/uDPbZvbjewTxzAQUON5+CwIiKiyGcYg6v2CHeQM9x4HqJlJDZU1Xmf7zKvTcTa2pIE3Ml93ozn251OwBECLu+Gg93Q+ilb86Mp1jJ7/sZzLZOro0IkJRzYbhWqQSIiA+UwhumoKrs48UH1Kj77v2AqPmTQPFGRwmuHKERBEAQNr3UMURtdzk+BC07INGc+xruxn2BSf2ynX6USVo8QESVmYFyxynpUcn7LcEwmEdHJUBzAZHKdX0uBEq7Mr4nXYmDAR2kaXrUAu9JjlGlFRvx7LElRf7pceFKWDwYA9U3RycCQLyoKwmsJUfIOvVasYm+gEmesVAl7V2qOhfKBKERBEAQNrzSGqOaMTYzGndFjD2uxNfpGGOszus13jG3iUKGUHMT4X585l9maU4ObgP20N+7+9jLlu6m/Z9YG2+kxj9tlOuMttmqFtcDJtzD/kYioWHlVUnwwVjlg1Hm2Zrj1TbB7/PAJ83E7gELNa/4TsB+t5fc7viuqSq9lqAhXvvUjW9PP6y6caEdIM6YiX2T0p+QYCv82ohAFQRA0vLQYYmnf3urftfmoeK7UEp9SZ5+k8c/0yjdRqc1b9z3Yc4L7szXxT7HG2PEiHjfVm5+nylXMQzSOTGE+YcMqg+3WEmeSZG7GihgiIutbmEcZtRoVbjOnCLbm/sq6YMe15q+riw/ugj97impbJ1/LvfTEqpi4aIzPRr7/qag0ocIgClEQBEHDK91lHnNrOJz85APsMPNegxtszZVE7Jun+6Ud84nojTE3I2WCnlqhQURUvSnm+iVk4Y7x9Xq/sDVee3Hq26be25jP7C+xe3SJGh9soVS7EFFJDjqps1q69RnK1oTNwOdodIfveI8ecQxsGz2cl/LVDqy7JiLKVabuRXw4QxShUGERhSgIgqCh3OUhqr0OozKsmY/ZN9izL3okxhT1teT+FRZgHl/l/bjLHNucf3cU2+MO7KC6t5nPye9agO01GOcEh/5cja3JbovKzWtMBNjHU7cxlVbj4OdwX/TP8X6I99binJIas7GT+INJG9maF9nJld1gobwiClEQBEHDa6UQVZWTncE7ON/ssA7so1kezGfP0C5gJzbEaguf4cFsTfwijE1GjcCqDfOrvJaZOuPcktQYS+5jhAXDhmaoKj1W8PuftgirWeKUHXC3g/w0MW2V4KR7FvMpzMXYql481oqXuPD5LlJlIrxJiEIUBEHQ8EoV4oTbQ+Hkv9/GXDojG9712Uip8+02gs81/vURzhcuVvoU6ujx+Sh60RgztMJQHyV34OrJswrm6BV9yatOTB5Gg/1oPg4/Ce+LO8hERDXXTQA72xtVZeQonvs39MZouJc7m/I4o/dXmNdZ6KRUobjybj2DlZk1Y3wv/eP8UkF4XXlppXsvEkh/kIJNWA1ScWNDLxI//IiICpV57Je+5gOXdPrgh9fuNvihM+LPUWyN42XcaIltgdeio8u/OApWOII9ZgMf2v75b5jKUtkNh8P7/MRbkalNz3w3Y2rOntaN2MVcvjMY7EbJs5nPk8+WwmvS5Pgs8DnTfpV8kAlvNPKTWRAEQcNLU4ilKUK3zcu5xDLGpGqrGDxEWg3ejqqaTwzYOjr8sDqbcTBSUANUojaWfMMhcaSy+XELN0icv+E/s3ttOwn2rgGdmE/3H2+BffRaA7AtY/htK2qfCnbzwQFgL/9yCFszaQY2yn2SXZn5qDSyf1aqT2nIz2OhIiEKURAEQcNL21TZHdIEDjTE52apykGNO9bYgJsJ7r/wID/F4mNF6bzZa+owHOOZZ42XosPFHmW2xFQXny9QRT5dwscZ6F3C5OcvJmxnPguDeoFd0w4bNyx2xnI6IqKuNzCuaHUQW5wlduPlfjpxuCkUNp0PkFc5FlYL7n8Pzwei9oQ3GlGIgiAIGv61tBvPn5fCgcuS4OuxBkeK6hTxJV4NMO71OLQK8xnYCON29xrgcyxujWk5RETh2KeB2nqFgB20ijdPzR+OidlJoTbMxwH7ttJXi3DHe+nw4WzNs46YBH509DKwu++eydYsGrAH7B+iWjKfU+1XiwIUhL9AFKIgCIKGl7bL3PzkpyDDmrjzZqkq9T/EROGSGvh372k4fJ2IKPoAtghrWSuE+fyxF2OIffxxZMACB54MXeeHSWBva49rPHvgQCkiIt85yljPJcnMJysad9I/+g6laPZwPnYgcgw2Ydj/ZCfcpwIbvvuuxmyH+DAXQRBKQRSiIAiChpcWQ6x1eD4cKPeRNfy9RBFTRESFlVDpmDzD5gPmT/m19Zx2Aez9u9sxnwMTloM9yB+btKY/54OpHJ1R0T6/i2V4ngewJRcRUfVNgWDfee7KfKIDMR/Q9QRWxER14jdGbWibU0Vp0voRb9KqNtvd2ugniRcKwt9EFKIgCIKGF1KIk/zfZYuOPMKRnOHv4a7y1QhPtmZrQluwz93AndxWTR6xc8dmK41PF/ERAnFNsOA5ywUTD40T+PfA0HfOgD3bDluEqTmSRERW4Xjcays2M5/Ob48E22d1ENgbna+zNSpSDSII/w2iEAVBEDS80C5zUBqvky1J55Uc/5chv3OF5fEbxhDDdqLCanVvAFtjZ4IVJGENTZhP5T+x202sPlZxTB5+kK0x1MFr8f0Bq0V0tDy9TGf8PvE4MoY7vY/C+Pl2rGX2rcJzIvOdcOc5vBtW9KxLcWNrJlc/La3+BeEfIgpREARBA1OIZWn4ebLdGqYkPG9jTqF6HJu7vO/fs7GohHx2oE/IsE1szeinrcBODeJ5fCV6eHmFpviUvvmxH1vT8x1sNJtvj4qx+gqeY6iS616JPZY5OQ3sW+uWlqrC6h6Z95fKbWiR80tJDRBFKAiIKERBEAQNTCG+qGrQUzrsN/0M1V5SW67kdPLw9CV26DM7vg5bE7QSK1VSGvA8vqodIvHaklG51XOKYmvORuM4UMNEvLbkxvZsTXwnvF7jcB5oDKy/H2zPlXao/lywyw4R0ZN3vvjL18DWOVqUnSD8C4hCFARB0FCmXeY+lyaCqrkbyHc5LVLxUAltcICR1V2untK9sQLDJBHV3s/5fF5Kw0mhYMfc92Q+oTdxkJNaZRK12Jqt0dlvC7ZjMl7bpUMzmSpz34QzRPPsilQXpriLrJdhF6B35oraE4TXBFGIgiAIGspUqVKWfDW3bah8dLNQ7dkGcCGU3Qe7XRucxiqUJiP92Rr/DfXA7j7tIvM5vRh3oq+s/RbsRgv4jneaN9oGmXi9RUb8PoXMxq7UnnuWMKewwXNEAQpCOUEUoiAIgoYXUogTonls79qPWIGR5oN1vjt6b2Rrhp4bC3b1qTgdPnwq71KdZ49xOsvHfJc5vSFueRsYY05hcOuf2BoVz/3Yt9CjZgzzWeB5GOw2xsyFqelelz6Ge3m09TpRkILwmiAKURAEQUOZFKKXEhuztea9AfMKcJfZvzHO+Gg2UxlaQkTx7VDtdaiN/QUT88zZmuR1uMO9dNm3zGfJ4GFgP+1mAbYBv3wyaP8cbP+eS0C5+SxdxW5UiTfWVffw4d15vqn/syhAQSgniEIUBEHQ8EL9EKvPXc0W1e+F6ujaTT+wjVy4LDM5hcotqyP6WB/ina0TOmN1iOsvPIb47G2MGerHGIFdUInPJGlZG2ez3PsFB7zo5/D7FLCh9NnHpVGW2nFBEP4bypSY7bb9a/injVz8KW/uoIwddcReCZRtb8mO224sNkc9cqIp2MnYc5aIiNx346kjhvIPN1193NBROnuRbg7/EH2yAT/ALQrwGHF9+HD4F0FabgnC64v8ZBYEQdCg80dodVAsC5/0Zk5xgThwqdiUl6i5HUL7582rwe645RO2xrJFAtjZp/E8Wa6o0oiIjJLxM/zRhzyd52Q2DqtaMmUU2NHt+feAyxl8TsYzMM0m/BqWAxIRFbphek/4kNmi9gShHCMKURAEQYN+N89HoGq68V4JNMIa++CfD6jOfHTzUWF9ndgObJtArirde2CqS8wDa7CLjHlDiBwnPE71K8OYj+4d3Kyxn4Rqz2GbI1uTUB9VZW4Ujkno3DmArXkZoz5lU0UQXh9EIQqCIGgo0y7zj02+B8XiFrCcqZqkWpjaEpaJ40GjO/G0ld+r/gF22neo/qrq88TsNvf7g723+g7m0+kOxisb22HD2IAY3ur/eT2su4sYOus/UWmiBgXh9UEUoiAIgoYyJWb3uzwBnALu8UCjTj4KHf0stAus+I6xbh5+HpcY4LV82hWbJxARrfylL9jTBx5iPsuPoI/Dn3juNE+eh5jlgw1tG/uFg/0wnscdA/t/LupOECoQohAFQRA0lCmGGKC06Y+YMIM3iN2CcUWTCDx0my4P2HGjs7EhbPp6V7C/0uM5kZ+8hapx+aG+zKdh62Cwb9jg9Yf34A0haq+ZAPa+HmfA1m3BY327Q5rAcx5skcKOKzFCQSg/iEIUBEHQUKYYojoewMgql/l08sDmro8nYW1wypwctmaM12Wwf5qHivB5Hf55bZiKgivXjl+/+TO078zDgfcNbr3D1pSU4HHv9v7rUaCCIFQ8RCEKgiBoeKH2XztCmrFFS+53BztowAJQWI1H8Aarab2x3ZfDbhOwsxy0jAdQNrirXOcVMDEtcd17XXAQ1eVEL7ZGZYnnb2DvTuZjE9Y32C0qUhAqEKIQBUEQNLyQQtSGusvsdgiPG9WBb2h/O2AL2HMf9wM79RrWExMRmTbG+ufiYv6ZnpqMjWU71QgC+9wl3mgxbNp0UHuXIrzgCbQ05ucpyw6y9D8UhPKDKERBEAQNZcpDLAuRY2ei8sEJo1qHNN3Iwunwz+9hP0SrWK5e7QZiXXL05Ib8Wr6aCtcy+94AOFAJD00yWruHvhQlJ4pQEMoPohAFQRA0vJBCPBZWi0m3fEV2LQzqBXbw+/vYcapdHA62cSKKqaTmWF9MRFRkhIrwzuR1zKfmpwTXd3nyTfj7H0Gt2BpBEARRiIIgCBpeaJe57ZkZbFFkIHaDudhvJdjdNvKZKlnuOA7P0jEDbL0T1mxNSj1lxGgaF7nO5xSfHMxVjOyGvRuJiPSzUZ0Gfz5VYn+C8IYhClEQBEHDC8UQ2zg8YY990XEFKCrvr3VBRT5ZyhVX676Yu5hYFztZZ7tx9erklgT281s8V/H8tq1g17n5LtimxOuq7/dZhF3BlfrtyNGfiGIUhAqOKERBEAQNL6QQv6h9sFS1VGCHcby1gXyoSmyLHmC7ns4DO2Uy1joTERmstQW7pDU/d/dug8Fu/l0E2HfX1mVrFnv2wusragtm53NT2fWfar8a7oNM0BOE8o0oREEQBA0vrZa5NLSpJxVVTTU8Noet0dmPCjHLmQuwYhyxTH36XQX74NHmbE3X7rfAVjvZ1D0yj12Lf+M9YIsaFITyzUsr3SuNe/m8qexbe6eC3art+/Ch07QyT8x+GGcJtufYMObjf84X7D9nYjJ3yMlppY5AWN8A/56Ria3JiOQDUBAqGvKTWRAEQcN/9pNZG+47v4STq8Ph633EG0KkNseNF6vrxqoLZbTKBlv3Kaq7O0NXszUrk1ASLqx9qFT11+iP2XB9t7ovFcUoCOUYUYiCIAga/rMYojZURaiS5cIfK8nFJhIdRl9nPrc+bwS2TiGmADVPmsbWmEfjMPvfbFeD+ru3lieWJyWb8wsUBKHcIgpREARBw7+mEF9G6/yQWXw32OdLjCtOtLuoutDPS7LA3rmvI9g6fC4VPe+Fu+DFCTw2qdLJN6hUn1WBneF6p1U/JXFGQXhNEYUoCIKg4V9TiC+iCNXxpsN8rrNj5FcuANvLNZb5bD2BjRkcInGz+nkXnhNZ5QC2BLu6D4dOqXmKREQ2zq5gu323jLdF+0AUoSCUF0QhCoIgaHileYj/Fl7LMc6oUxXzEi3Om7I1JT2Twc54ZAN2kQm/T+ZP8fsk1577PPmEx0EFQXg9EYUoCIKgodwpxO8ft4QLfr/alb89LL7W2gnMxwCnF9Dd9Zh3eDysBrtRh1OwuuX0MT4SNc8BcyAjx80UxSgIrymiEAVBEDSUO4X4InjsWoo5kTE8xzBk2CawPX8bB7aDB44uICJKDLYDO3zy9FLVn/umFVi//eEMtqa0HE5pRCsI/w6iEAVBEDS80lrmF+FFKmCae4WDvfu9rVrWYH2zUQLWMmeHOfBr8cOcyFE3RzHlVs0sHuyw/iGKxwx23HYP+oF9ESe8ihoUhH8JUYiCIAga3ogY4stA2wiBSw23g137+ES2zvKhIdiFSuPtwMW8i87B0Lpwrn5ed0URCsJ/gChEQRAEDaIQ/wF+CzDOqOYyEhHdX8UV4P+l5mer2Qvg0CUK7EFOt8HeH8PzHc91WCkqUhD+IaIQBUEQNLyRCrEsI1EnxTQGWx1LSkTk9i12wNFWhbI2sBP4TK5+Gny+ftSNXcuBZ/XAjn9sD3bExzzfcfC1sXCcPc23iGIUhL+JKERBEAQNb6RC/C/xXoaddxYP2A1//+JhT7ZmSa2DYG+PbQn2wVYbRf0Jwr+AKERBEAQNohD/AWWJRb5IVUnt6UqVTGPs5xg6eI4oREH4FxCFKAiCoKHc1TK/TpRF/dX/fQ6oveQ4K/h75OhP2DHyKqHw1A/iHb5Lw+3Hr5h6da6SAvYAlwCwZ9Q4IcpTeKMRhSgIgqBBFOK/jH/PJaC6ah+eX2rcscACXU4PWK54TGVrPFevhEXju/B51T89bgJ2WRThy5ivLQjlBdlUecWozWuJiNr5YIuwKydrg/147osNrlKb0xo54GZN8Fvz5cNOeKORn8yCIAgaRCGWA9y2YIlgyzqPmc+NS9XBLtHjr2uRaTHYkeP//sAr+QktVGREIQqCIGgQhVgOURUjEVHk2NLV3sy7g2Dd/ns4RtXWNpOtud1jiShA4Y1BFKIgCIIGSbspB3j+jDvROgWG/y/X/+GzdBVTkR4tnMGOGDZL1J8g/B9EIQqCIGiQGOJryObgtphk7XsBlJzfgYXsRctJNQa7b/0AdtwjlxqBHT6JN5pViYt2gnM5OseIqhQqLKIQBUEQNIhCrKC4bVumJRFREXe66LKpw09sSQ/PB6IIhTcGUYiCIAgaRCFWEHz2fwEvZMigeUzZlVZloq2u2swiF+xqtolgH2i56W+fRxBeV0QhCoIgaJA8xAqKtmqW8D5oe65UchX1jdhxHrw3G9Rd6LMqynE3sTWiCIXyiihEQRAEDaIQyyGLHvRm6i9k0JFSVZn7jkJYFzEd+yq6bf+61IDywHvvg+3vyn32PGkExxnsfUsUo1AuEIUoCIKgQXaZKygNj81hL2xpnWu0DabSM8QeimZmuOvsZfOcHaen/X2wx/hekp1ooVwgClEQBEGDKMT/mFepjLYGt4ZzLznbF/4e8eGMUq9FjQ9+HdyV+aiDtQShvCAKURAEQYMoxHKI2oGGiOi7FOx+PbfW0VJVmueeJXCc4kL+/Rgx9L/pmSgxReF1QBSiIAiCBlGI5YDXST3VPLQAruVh34Wi5IQKgyhEQRAEDVKpUg54EUX49rVxTPrva/7tX1am6OTo8QMVoVliYA72wdC67Dz9vO6Wer0pMS6wrpJTlChN4ZUjClEQBEGDxBDLIWpMkahsKrLbhcmwLirNCv7+oM+iV6bSXqc4qfDmIj+ZyyFl+bBYcL8v+9A83vYQrKt3dO5r820oH4DC64D8ZBYEQdAgP5nLIS/6k/lloA6vihz9iSg7ocIgClEQBEGDKMQ3iHn3+8GL/UXtg39b3b2szY+NQe3gOBP8zsNxXqUKFt5cRCEKgiBoEIUo/CXRUThUquPN8fB3fX0lc5tebfqOIPwTRCEKgiBokDxE4X9oy0sM6BULai/IBf9e7ZdF8hNDqDCIQhQEQdAgCvENpsfFSaDuAnp9U2rsz+0HbAgROWp+qWvanJ7JVOTFTsv/cldZ246ylPcJ/zaiEAVBEDTILrPwSphweyi88TY23Cl5iMIrRxSiIAiChv8PAYMpKGJO08gAAAAASUVORK5CYII=" id="image8218a82fbf" transform="scale(1 -1) translate(0 -272.88)" x="884.88" y="-12.24" width="233.28" height="272.88"/> - + @@ -1966,7 +1966,7 @@ iVBORw0KGgoAAAANSUhEUgAAAUQAAAF5CAYAAADnDlO1AABgNElEQVR4nO2ddWBUZxPuJ+6eIAkhHoIH - + @@ -1981,7 +1981,7 @@ iVBORw0KGgoAAAANSUhEUgAAAUQAAAF5CAYAAADnDlO1AABgNElEQVR4nO2ddWBUZxPuJ+6eIAkhHoIH - + @@ -1996,7 +1996,7 @@ iVBORw0KGgoAAAANSUhEUgAAAUQAAAF5CAYAAADnDlO1AABgNElEQVR4nO2ddWBUZxPuJ+6eIAkhHoIH - + @@ -2029,35 +2029,35 @@ iVBORw0KGgoAAAANSUhEUgAAAUQAAAF5CAYAAADnDlO1AABgNElEQVR4nO2ddWBUZxPuJ+6eIAkhHoIH - + - + - + - + - + @@ -2131,7 +2131,7 @@ L 786.133317 6.140352 L 796.117531 3.047384 L 810.432469 -1 L 810.432469 -1 -" clip-path="url(#p32b2dd05da)" style="fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#p0e07fa5488)" style="fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: square"/> - - - - - - + + + + + + @@ -2257,18 +2257,18 @@ z " style="fill: #ffffff"/> +iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAABWElEQVR4nO3Yiw0CMRAD0YDov+QLNRit5BE7LsDal88F8br33jOU91TReNlnUCmzXSYzj8xymcw8Mv+pbMmaycwjs1wmM4/MchmXyZ2My3TN8nAn4zK5a7ZkMi6Tu2bcybhM7ppxJ+MyXbM83Mm4TO6aLZmMy+Sumcxy2ZIbwJ1MZh6ZebiTcZncNZNZLuMyvZt5ZOaRmWfJ3Zyd7HmeuTIuc8l1cje7ZWDm5NEAM93NOGDmkt3kMn1QumXuZp4tu+mD0i0DM93NODLzyCyXgZl+guLIzCOzXAZm+gmKIzOPzHKZzDz+F1Quk5lHZrlMZh6Z5TKZeWSWy2Tm2cL0p3u3TGYemT+ULfkDU2YcMJN7N5e8m0uY3s28bAmTe2iX3E2ZeRmX6ScoL9vB5E62ZAO27CaX6RvQLZOZx0NbLpOZx0NbLpOZx0NbLpOZx0Ob53XOGWsbZX4BVQam4NEPKDEAAAAASUVORK5CYII=" id="image755c4aab37" transform="scale(1 -1) translate(0 -277.2)" x="822.24" y="-12.24" width="13.68" height="277.2"/> - - + @@ -2283,7 +2283,7 @@ L 3.5 0 - + @@ -2298,7 +2298,7 @@ L 3.5 0 - + @@ -2313,152 +2313,152 @@ L 3.5 0 - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2486,13 +2486,13 @@ z " style="fill: #ffffff"/> +iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhNZ1BwwB9AagCiF1K0kxbdn/19FjT32ofSWpzSWuveZ3NixRwPi7lYTE6MdpPTE2OuFEwwtLu7OR0YE/zJ0A0wY6a4mYHZCpqO2k0tZoabD1tBmFZD+2JYTDIa9G6SYl7MujkX02KyTctpqUObcaA8GW56QxtyCwqpIHKd1AcKKOZ1E30RMzctKGbGrJtTMTNm3ZyKme+0oJjZzYZ2KlbM8RRzPjSm9epeN38r1hex+RTzhZgXsxU0HjhnpJgXszmbi4VgekPbM2AuFhLaEExvaDN20/vMGtr5hIQ2BXNt7vLe3ZxPQzsf2k1uA7xuik/0mDst2LQxu8mJ1c350AeKtWnR0IK/qmtoXwxcQSsktMUcjhqTExNXkNdN0gAxZshugpRqTHY3MS0Y86RUUN2cinndPOA1tG7Op5jzYTHJDRA3LfnMzG6GYGpDWzd/Kya+Hogx9x8ppsWsm2Oxy4vJusk9M3HTXuJzM6KCyHW6zwoJbQamt4LIphVjoudmRtPGYHpDG9G0ZGuIvx7AmF43tQaAz0z8UoFiet0kN0B8cWFDm1GO4otLSmgjPsaxTesNbcZXKji0mJYaE5PiDxRSDPyjPfpAAcUu7X/MOqABajdJTLGbnB76zOgKQjE5MRTzH6nyjgS9xeYCAAAAAElFTkSuQmCC" id="imagedfc08e48cc" transform="scale(1 -1) translate(0 -277.2)" x="1122.48" y="-12.24" width="13.68" height="277.2"/> - + @@ -2508,7 +2508,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2524,7 +2524,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2540,7 +2540,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2556,7 +2556,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2571,7 +2571,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2586,7 +2586,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2601,7 +2601,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2616,7 +2616,7 @@ iVBORw0KGgoAAAANSUhEUgAAABMAAAGBCAYAAACEiYowAAAB+ElEQVR4nO2cgW3EMAwDbSej/Qi//yhN - + @@ -2644,16 +2644,16 @@ z - + - + - + - +