From cfc4efa442a6b680294635cbc7567b7192aee5ac Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 11 Nov 2024 22:46:24 +0000 Subject: [PATCH] Deployed dc6fb931 to HEAD with MkDocs 1.6.1 and mike 2.1.3 --- HEAD/api_reference/gen/defs.html | 4 +- HEAD/api_reference/gen/full.html | 26 +- HEAD/api_reference/gen/fulltoc.html | 2 +- HEAD/api_reference/gen/index.html | 2 +- HEAD/api_reference/gen/qties.html | 10 +- HEAD/api_reference/gen/qties.summary.html | 2 +- HEAD/api_reference/gen/qty.helpers.html | 2 +- HEAD/api_reference/gen/qty.traits.html | 2 +- HEAD/api_reference/gen/qty.types.general.html | 4 +- HEAD/api_reference/gen/qty.types.html | 4 +- HEAD/api_reference/gen/refs.html | 2 +- HEAD/api_reference/gen/scope.html | 2 +- HEAD/api_reference/gen/spec.cats.html | 4 +- HEAD/api_reference/gen/spec.ext.html | 4 +- HEAD/api_reference/gen/spec.html | 10 +- HEAD/api_reference/gen/spec.mods.html | 2 +- HEAD/api_reference/gen/spec.reqs.html | 2 +- HEAD/api_reference/gen/spec.res.names.html | 2 +- .../social/blog/archive/2024/page/2.png | Bin 0 -> 24284 bytes .../blog/posts/isq-part-6-challenges.png | Bin 0 -> 52633 bytes .../index.html | 1 + .../index.html | 1 + .../index.html | 1 + .../index.html | 1 + .../index.html | 1 + .../11/05/mp-units-240-released/index.html | 18 + .../index.html | 2947 +++++++++++++++++ HEAD/blog/archive/2024/index.html | 98 +- HEAD/blog/archive/2024/page/2/index.html | 2332 +++++++++++++ HEAD/blog/category/metrology/index.html | 48 + HEAD/blog/index.html | 96 +- HEAD/blog/page/2/index.html | 48 + HEAD/feed_json_created.json | 2 +- HEAD/feed_json_updated.json | 2 +- HEAD/feed_rss_created.xml | 2 +- HEAD/feed_rss_updated.xml | 2 +- HEAD/search/search_index.json | 2 +- HEAD/sitemap.xml | 144 +- HEAD/sitemap.xml.gz | Bin 1055 -> 1074 bytes 39 files changed, 5619 insertions(+), 213 deletions(-) create mode 100644 HEAD/assets/images/social/blog/archive/2024/page/2.png create mode 100644 HEAD/assets/images/social/blog/posts/isq-part-6-challenges.png create mode 100644 HEAD/blog/2024/11/11/international-system-of-quantities-isq-part-6---challenges/index.html create mode 100644 HEAD/blog/archive/2024/page/2/index.html diff --git a/HEAD/api_reference/gen/defs.html b/HEAD/api_reference/gen/defs.html index 1e4f6006..f4cf0f80 100644 --- a/HEAD/api_reference/gen/defs.html +++ b/HEAD/api_reference/gen/defs.html @@ -1,11 +1,11 @@ -[defs]

3 Terms and definitions [defs]

For the purposes of this document, +[defs]

3 Terms and definitions [defs]

For the purposes of this document, the terms and definitions given in IEC 60050-102:2007/AMD3:2021, IEC 60050-112:2010/AMD2:2020, ISO 80000-2:2019, and N4971, -and the following apply.
ISO and IEC maintain terminology databases +and the following apply.
ISO and IEC maintain terminology databases for use in standardization at the following addresses: diff --git a/HEAD/api_reference/gen/full.html b/HEAD/api_reference/gen/full.html index a958635c..635ae0f6 100644 --- a/HEAD/api_reference/gen/full.html +++ b/HEAD/api_reference/gen/full.html @@ -1,4 +1,4 @@ -14882

1 Scope [scope]

This document describes the contents of the mp-units library.

2 References [refs]

The following documents are referred to in the text +14882

1 Scope [scope]

This document describes the contents of the mp-units library.

2 References [refs]

The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document.
For dated references, only the edition cited applies.
For undated references, the latest edition of the referenced document @@ -6,29 +6,29 @@ the latest edition of the referenced document Amendment 3 — International Electrotechnical Vocabulary (IEV) — Part 102: Mathematics — General concepts and linear algebra
  • IEC 60050-112:2010/AMD2:2020, Amendment 2 — International Electrotechnical Vocabulary (IEV) — -Part 112: Quantities and units
  • ISO 80000 (all parts), Quantities and units
  • The C++ Standards Committee.
    N4971: Working Draft, Standard for Programming Language C++.
    Edited by Thomas Köppe.
    Available from: https://wg21.link/N4971
  • The C++ Standards Committee.
    SD-8: Standard Library Compatibility.
    Edited by Bryce Lelbach.
    Available from: https://wg21.link/SD8
  • 3 Terms and definitions [defs]

    For the purposes of this document, +Part 112: Quantities and units
  • ISO 80000 (all parts), Quantities and units
  • The C++ Standards Committee.
    N4971: Working Draft, Standard for Programming Language C++.
    Edited by Thomas Köppe.
    Available from: https://wg21.link/N4971
  • The C++ Standards Committee.
    SD-8: Standard Library Compatibility.
    Edited by Bryce Lelbach.
    Available from: https://wg21.link/SD8
  • 3 Terms and definitions [defs]

    For the purposes of this document, the terms and definitions given in IEC 60050-102:2007/AMD3:2021, IEC 60050-112:2010/AMD2:2020, ISO 80000-2:2019, and N4971, -and the following apply.
    ISO and IEC maintain terminology databases +and the following apply.
    ISO and IEC maintain terminology databases for use in standardization at the following addresses: -

    4 Specification [spec]

    4.1 External [spec.ext]

    The specification of the mp-units library subsumes +

    4 Specification [spec]

    4.1 External [spec.ext]

    The specification of the mp-units library subsumes N4971, [description], N4971, [requirements], N4971, [concepts.equality], and SD-8, all assumingly amended for the context of this library.
    [Note 1: 
    This means that, non exhaustively,
    • ​::​mp_units2 is a reserved namespace, and
    • std​::​vector<mp_units​::​type> is a program-defined specialization and a library-defined specialization -from the point of view of the C++ standard library and the mp-units library, respectively.
    — end note]
    The mp-units library is not part of the C++ implementation.

    4.2 Categories [spec.cats]

    Detailed specifications for each of the components in the library are in +from the point of view of the C++ standard library and the mp-units library, respectively.
    — end note]
    The mp-units library is not part of the C++ implementation.

    4.2 Categories [spec.cats]

    Detailed specifications for each of the components in the library are in [qties][qties], -as shown in Table 1.
    Table 1: Library categories [tab:lib.cats]
    Clause
    Category
    Quantities library
    The quantities library ([qties]) -describes components for dealing with quantities.

    4.3 Modules [spec.mods]

    The mp-units library provides the +as shown in Table 1.
    Table 1: Library categories [tab:lib.cats]
    Clause
    Category
    Quantities library
    The quantities library ([qties]) +describes components for dealing with quantities.

    4.3 Modules [spec.mods]

    The mp-units library provides the mp-units modules, -shown in Table 2.
    Table 2: mp-units modules [tab:modules]
    mp_units
    mp_units.core
    mp_units.systems

    4.4 Library-wide requirements [spec.reqs]

    4.4.1 Reserved names [spec.res.names]

    The mp-units library reserves macro names that start with -MP_UNITSdigit-sequence_.

    5 Quantities library [qties]

    5.1 Summary [qties.summary]

    This Clause describes components for dealing with quantities, +shown in Table 2.
    Table 2: mp-units modules [tab:modules]
    mp_units
    mp_units.core
    mp_units.systems

    4.4 Library-wide requirements [spec.reqs]

    4.4.1 Reserved names [spec.res.names]

    The mp-units library reserves macro names that start with +MP_UNITSdigit-sequence_.

    5 Quantities library [qties]

    5.1 Summary [qties.summary]

    This Clause describes components for dealing with quantities, as summarized in Table 3.
    Table 3: Quantities library summary [tab:qties.summary]
    Subclause
    Module
    Helpers
    mp_units.core
    Traits
    Concepts
    Types
    Compatibility
    Dimension one
    Systems
    mp_units.systems
    std​::​chrono compatibility

    5.2 Module mp_units synopsis [mp.units.syn]

    export module mp_units; export import mp_units.core; @@ -109,7 +109,7 @@ as summarized in Table }

    5.5 Helpers [qty.helpers]

    consteval bool converts-to-base-subobject-of(std::meta type, std::meta template_name); -
    Preconditions: is_type(type) && is_template(template_name) is true.
    Returns: true if +
    Preconditions: is_type(type) && is_template(template_name) is true.
    Returns: true if [:type:] has an unambiguous and accessible base that is a specialization of [:template_name:], and false otherwise.

    5.6 Traits [qty.traits]

    template<typename Rep> @@ -121,7 +121,7 @@ that is a specialization of [template<typename Rep> constexpr bool is_tensor = false; -
    Remarks: Pursuant to N4971, [namespace.std] ([spec.ext]), +
    Remarks: Pursuant to N4971, [namespace.std] ([spec.ext]), users may specialize is_scalar, is_vector, and is_tensor to true for cv-unqualified program-defined types which respectively represent @@ -145,12 +145,12 @@ and false for types whi named-quantity-spec<T> || detail::IntermediateDerivedQuantitySpec<T> || template_of(^T) == ^kind_of; -

    5.8 Types [qty.types]

    5.8.1 General [qty.types.general]

    5.8 Types [qty.types]

    5.8.1 General [qty.types.general]

    A quantity type is a type Q that is a specialization of quantity or quantity_point.
    Q represents a quantity (IEC 60050, 112-01-01) with Q​::​rep as its number and Q​::​reference as its reference.
    Q is a structural type (N4971, [temp.param]) -if Q​::​rep is a structural type.
    Each class template defined in subclause [qty.types] +if Q​::​rep is a structural type.
    Each class template defined in subclause [qty.types] has data members and special members specified below, and has no base classes or members other than those specified.

    5.8.2 Class template quantity [qty.type]

    namespace mp_units { diff --git a/HEAD/api_reference/gen/fulltoc.html b/HEAD/api_reference/gen/fulltoc.html index 7eb11662..226490f1 100644 --- a/HEAD/api_reference/gen/fulltoc.html +++ b/HEAD/api_reference/gen/fulltoc.html @@ -11,4 +11,4 @@ h4 { margin: 0.1em 5pt 0.1em 5pt; border-bottom: 1px dashed rgba(0, 0, 0, 0.2); h3 { border-bottom-color: #b0b0b05a; } h4 { border-bottom-color: #b0b0b05a; } } -

    mp-units Library Reference Documentations

    (Generated on 2024-11-07 from the LaTeX sources by cxxdraft-htmlgen. This is not an ISO publication.)

    Note: this is an early draft. It's known to be incomplet and incorrekt, and it has lots of bad formatting.

    Contents

    1 Scope [scope]

    2 References [refs]

    3 Terms and definitions [defs]

    4 Specification [spec]

    4.1 External [spec.ext]

    4.2 Categories [spec.cats]

    4.4 Library-wide requirements [spec.reqs]

    4.4.1 Reserved names [spec.res.names]

    5 Quantities library [qties]

    5.2 Module mp_units synopsis [mp.units.syn]

    5.3 Module mp_units.core synopsis [mp.units.core.syn]

    5.4 Module mp_units.systems synopsis [mp.units.systems.syn]

    5.8 Types [qty.types]

    5.8.2 Class template quantity [qty.type]

    5.8.3 Class template quantity_point [qty.point.type]

    5.9 Compatibility [qty.compat]

    5.10 Dimension one [qty.one]

    5.12 std​::​chrono compatibility [qty.chrono]

    Index

    Index of library modules

    Index of library names

    Index of library concepts

    \ No newline at end of file +

    mp-units Library Reference Documentations

    (Generated on 2024-11-11 from the LaTeX sources by cxxdraft-htmlgen. This is not an ISO publication.)

    Note: this is an early draft. It's known to be incomplet and incorrekt, and it has lots of bad formatting.

    Contents

    1 Scope [scope]

    2 References [refs]

    3 Terms and definitions [defs]

    4 Specification [spec]

    4.1 External [spec.ext]

    4.2 Categories [spec.cats]

    4.4 Library-wide requirements [spec.reqs]

    4.4.1 Reserved names [spec.res.names]

    5 Quantities library [qties]

    5.2 Module mp_units synopsis [mp.units.syn]

    5.3 Module mp_units.core synopsis [mp.units.core.syn]

    5.4 Module mp_units.systems synopsis [mp.units.systems.syn]

    5.8 Types [qty.types]

    5.8.2 Class template quantity [qty.type]

    5.8.3 Class template quantity_point [qty.point.type]

    5.9 Compatibility [qty.compat]

    5.10 Dimension one [qty.one]

    5.12 std​::​chrono compatibility [qty.chrono]

    Index

    Index of library modules

    Index of library names

    Index of library concepts

    \ No newline at end of file diff --git a/HEAD/api_reference/gen/index.html b/HEAD/api_reference/gen/index.html index af1df867..2ef3c92a 100644 --- a/HEAD/api_reference/gen/index.html +++ b/HEAD/api_reference/gen/index.html @@ -12,4 +12,4 @@ div.tocChapter { display: none; } h3 { border-bottom-color: #b0b0b05a; } h4 { border-bottom-color: #b0b0b05a; } } -

    mp-units Library Reference Documentations

    (Generated on 2024-11-07 from the LaTeX sources by cxxdraft-htmlgen. This is not an ISO publication.)

    Note: this is an early draft. It's known to be incomplet and incorrekt, and it has lots of bad formatting.

    Contents

    2 References [refs][refs]

    3 Terms and definitions [defs][defs]

    4 Specification [spec][spec]

    4.1 External [spec.ext]

    4.2 Categories [spec.cats]

    4.4 Library-wide requirements [spec.reqs]

    4.4.1 Reserved names [spec.res.names]

    5 Quantities library [qties][qties]

    5.2 Module mp_units synopsis [mp.units.syn]

    5.3 Module mp_units.core synopsis [mp.units.core.syn]

    5.4 Module mp_units.systems synopsis [mp.units.systems.syn]

    5.8 Types [qty.types]

    5.8.2 Class template quantity [qty.type]

    5.8.3 Class template quantity_point [qty.point.type]

    5.9 Compatibility [qty.compat]

    5.10 Dimension one [qty.one]

    5.12 std​::​chrono compatibility [qty.chrono]

    Index

    Index of library modules

    Index of library names

    Index of library concepts

    \ No newline at end of file +

    mp-units Library Reference Documentations

    (Generated on 2024-11-11 from the LaTeX sources by cxxdraft-htmlgen. This is not an ISO publication.)

    Note: this is an early draft. It's known to be incomplet and incorrekt, and it has lots of bad formatting.

    Contents

    2 References [refs][refs]

    3 Terms and definitions [defs][defs]

    4 Specification [spec][spec]

    4.1 External [spec.ext]

    4.2 Categories [spec.cats]

    4.4 Library-wide requirements [spec.reqs]

    4.4.1 Reserved names [spec.res.names]

    5 Quantities library [qties][qties]

    5.2 Module mp_units synopsis [mp.units.syn]

    5.3 Module mp_units.core synopsis [mp.units.core.syn]

    5.4 Module mp_units.systems synopsis [mp.units.systems.syn]

    5.8 Types [qty.types]

    5.8.2 Class template quantity [qty.type]

    5.8.3 Class template quantity_point [qty.point.type]

    5.9 Compatibility [qty.compat]

    5.10 Dimension one [qty.one]

    5.12 std​::​chrono compatibility [qty.chrono]

    Index

    Index of library modules

    Index of library names

    Index of library concepts

    \ No newline at end of file diff --git a/HEAD/api_reference/gen/qties.html b/HEAD/api_reference/gen/qties.html index 3cf518eb..59be81a6 100644 --- a/HEAD/api_reference/gen/qties.html +++ b/HEAD/api_reference/gen/qties.html @@ -1,4 +1,4 @@ -[qties]

    5 Quantities library [qties]

    5.1 Summary [qties.summary]

    This Clause describes components for dealing with quantities, +[qties]

    5 Quantities library [qties]

    5.1 Summary [qties.summary]

    This Clause describes components for dealing with quantities, as summarized in Table 3.
    Table 3: Quantities library summary [tab:qties.summary]
    Subclause
    Module
    Helpers
    mp_units.core
    Traits
    Concepts
    Types
    Compatibility
    Dimension one
    Systems
    mp_units.systems
    std​::​chrono compatibility

    5.2 Module mp_units synopsis [mp.units.syn]

    export module mp_units; export import mp_units.core; @@ -79,7 +79,7 @@ as summarized in Table }

    5.5 Helpers [qty.helpers]

    consteval bool converts-to-base-subobject-of(std::meta type, std::meta template_name); -
    Preconditions: is_type(type) && is_template(template_name) is true.
    Returns: true if +
    Preconditions: is_type(type) && is_template(template_name) is true.
    Returns: true if [:type:] has an unambiguous and accessible base that is a specialization of [:template_name:], and false otherwise.

    5.6 Traits [qty.traits]

    template<typename Rep> @@ -91,7 +91,7 @@ that is a specialization of [template<typename Rep> constexpr bool is_tensor = false; -
    Remarks: Pursuant to N4971, [namespace.std] ([spec.ext]), +
    Remarks: Pursuant to N4971, [namespace.std] ([spec.ext]), users may specialize is_scalar, is_vector, and is_tensor to true for cv-unqualified program-defined types which respectively represent @@ -115,12 +115,12 @@ and false for types whi named-quantity-spec<T> || detail::IntermediateDerivedQuantitySpec<T> || template_of(^T) == ^kind_of; -

    5.8 Types [qty.types]

    5.8.1 General [qty.types.general]

    5.8 Types [qty.types]

    5.8.1 General [qty.types.general]

    A quantity type is a type Q that is a specialization of quantity or quantity_point.
    Q represents a quantity (IEC 60050, 112-01-01) with Q​::​rep as its number and Q​::​reference as its reference.
    Q is a structural type (N4971, [temp.param]) -if Q​::​rep is a structural type.
    Each class template defined in subclause [qty.types] +if Q​::​rep is a structural type.
    Each class template defined in subclause [qty.types] has data members and special members specified below, and has no base classes or members other than those specified.

    5.8.2 Class template quantity [qty.type]

    namespace mp_units { diff --git a/HEAD/api_reference/gen/qties.summary.html b/HEAD/api_reference/gen/qties.summary.html index a3942372..6bbf98b5 100644 --- a/HEAD/api_reference/gen/qties.summary.html +++ b/HEAD/api_reference/gen/qties.summary.html @@ -1,2 +1,2 @@ -[qties.summary]

    5 Quantities library [qties]

    5.1 Summary [qties.summary]

    This Clause describes components for dealing with quantities, +[qties.summary]

    5 Quantities library [qties]

    5.1 Summary [qties.summary]

    This Clause describes components for dealing with quantities, as summarized in Table 3.
    Table 3: Quantities library summary [tab:qties.summary]
    Subclause
    Module
    Helpers
    mp_units.core
    Traits
    Concepts
    Types
    Compatibility
    Dimension one
    Systems
    mp_units.systems
    std​::​chrono compatibility
    \ No newline at end of file diff --git a/HEAD/api_reference/gen/qty.helpers.html b/HEAD/api_reference/gen/qty.helpers.html index 86b37345..d21a3de2 100644 --- a/HEAD/api_reference/gen/qty.helpers.html +++ b/HEAD/api_reference/gen/qty.helpers.html @@ -1,5 +1,5 @@ [qty.helpers]

    5 Quantities library [qties]

    5.5 Helpers [qty.helpers]

    consteval bool converts-to-base-subobject-of(std::meta type, std::meta template_name); -
    Preconditions: is_type(type) && is_template(template_name) is true.
    Returns: true if +
    Preconditions: is_type(type) && is_template(template_name) is true.
    Returns: true if [:type:] has an unambiguous and accessible base that is a specialization of [:template_name:], and false otherwise.
    \ No newline at end of file diff --git a/HEAD/api_reference/gen/qty.traits.html b/HEAD/api_reference/gen/qty.traits.html index 66982084..996bdbda 100644 --- a/HEAD/api_reference/gen/qty.traits.html +++ b/HEAD/api_reference/gen/qty.traits.html @@ -7,7 +7,7 @@ template<typename Rep> constexpr bool is_tensor = false; -
    Remarks: Pursuant to N4971, [namespace.std] ([spec.ext]), +
    Remarks: Pursuant to N4971, [namespace.std] ([spec.ext]), users may specialize is_scalar, is_vector, and is_tensor to true for cv-unqualified program-defined types which respectively represent diff --git a/HEAD/api_reference/gen/qty.types.general.html b/HEAD/api_reference/gen/qty.types.general.html index 5860f5d1..9246cd5c 100644 --- a/HEAD/api_reference/gen/qty.types.general.html +++ b/HEAD/api_reference/gen/qty.types.general.html @@ -1,8 +1,8 @@ -[qty.types.general]

    5 Quantities library [qties]

    5.8 Types [qty.types]

    5.8.1 General [qty.types.general]

    A quantity type +[qty.types.general]

    5 Quantities library [qties]

    5.8 Types [qty.types]

    5.8.1 General [qty.types.general]

    A quantity type is a type Q that is a specialization of quantity or quantity_point.
    Q represents a quantity (IEC 60050, 112-01-01) with Q​::​rep as its number and Q​::​reference as its reference.
    Q is a structural type (N4971, [temp.param]) -if Q​::​rep is a structural type.
    Each class template defined in subclause [qty.types] +if Q​::​rep is a structural type.
    Each class template defined in subclause [qty.types] has data members and special members specified below, and has no base classes or members other than those specified.
    \ No newline at end of file diff --git a/HEAD/api_reference/gen/qty.types.html b/HEAD/api_reference/gen/qty.types.html index 1719fc2f..77f2e5f4 100644 --- a/HEAD/api_reference/gen/qty.types.html +++ b/HEAD/api_reference/gen/qty.types.html @@ -1,9 +1,9 @@ -[qty.types]

    5 Quantities library [qties]

    5.8 Types [qty.types]

    5.8.1 General [qty.types.general]

    A quantity type +[qty.types]

    5 Quantities library [qties]

    5.8 Types [qty.types]

    5.8.1 General [qty.types.general]

    A quantity type is a type Q that is a specialization of quantity or quantity_point.
    Q represents a quantity (IEC 60050, 112-01-01) with Q​::​rep as its number and Q​::​reference as its reference.
    Q is a structural type (N4971, [temp.param]) -if Q​::​rep is a structural type.
    Each class template defined in subclause [qty.types] +if Q​::​rep is a structural type.
    Each class template defined in subclause [qty.types] has data members and special members specified below, and has no base classes or members other than those specified.

    5.8.2 Class template quantity [qty.type]

    namespace mp_units { diff --git a/HEAD/api_reference/gen/refs.html b/HEAD/api_reference/gen/refs.html index c0f3dc79..f2c71516 100644 --- a/HEAD/api_reference/gen/refs.html +++ b/HEAD/api_reference/gen/refs.html @@ -1,4 +1,4 @@ -[refs]

    2 References [refs]

    The following documents are referred to in the text +[refs]

    2 References [refs]

    The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document.
    For dated references, only the edition cited applies.
    For undated references, the latest edition of the referenced document diff --git a/HEAD/api_reference/gen/scope.html b/HEAD/api_reference/gen/scope.html index 9c910aac..81fcd617 100644 --- a/HEAD/api_reference/gen/scope.html +++ b/HEAD/api_reference/gen/scope.html @@ -1 +1 @@ -[scope]

    1 Scope [scope]

    This document describes the contents of the mp-units library.
    \ No newline at end of file +[scope]

    1 Scope [scope]

    This document describes the contents of the mp-units library.
    \ No newline at end of file diff --git a/HEAD/api_reference/gen/spec.cats.html b/HEAD/api_reference/gen/spec.cats.html index b51a7690..965b21de 100644 --- a/HEAD/api_reference/gen/spec.cats.html +++ b/HEAD/api_reference/gen/spec.cats.html @@ -1,4 +1,4 @@ -[spec.cats]

    4 Specification [spec]

    4.2 Categories [spec.cats]

    Detailed specifications for each of the components in the library are in +[spec.cats]

    4 Specification [spec]

    4.2 Categories [spec.cats]

    Detailed specifications for each of the components in the library are in [qties][qties], -as shown in Table 1.
    Table 1: Library categories [tab:lib.cats]
    Clause
    Category
    Quantities library
    The quantities library ([qties]) +as shown in Table 1.
    Table 1: Library categories [tab:lib.cats]
    Clause
    Category
    Quantities library
    The quantities library ([qties]) describes components for dealing with quantities.
    \ No newline at end of file diff --git a/HEAD/api_reference/gen/spec.ext.html b/HEAD/api_reference/gen/spec.ext.html index 0b2bc59a..f82c6075 100644 --- a/HEAD/api_reference/gen/spec.ext.html +++ b/HEAD/api_reference/gen/spec.ext.html @@ -1,6 +1,6 @@ -[spec.ext]

    4 Specification [spec]

    4.1 External [spec.ext]

    The specification of the mp-units library subsumes +[spec.ext]

    4 Specification [spec]

    4.1 External [spec.ext]

    The specification of the mp-units library subsumes N4971, [description], N4971, [requirements], N4971, [concepts.equality], and SD-8, all assumingly amended for the context of this library.
    [Note 1: 
    This means that, non exhaustively,
    • ​::​mp_units2 is a reserved namespace, and
    • std​::​vector<mp_units​::​type> is a program-defined specialization and a library-defined specialization -from the point of view of the C++ standard library and the mp-units library, respectively.
    — end note]
    The mp-units library is not part of the C++ implementation.
    \ No newline at end of file +from the point of view of the C++ standard library and the mp-units library, respectively.
    — end note]
    The mp-units library is not part of the C++ implementation.
    \ No newline at end of file diff --git a/HEAD/api_reference/gen/spec.html b/HEAD/api_reference/gen/spec.html index cc950fd7..712e852a 100644 --- a/HEAD/api_reference/gen/spec.html +++ b/HEAD/api_reference/gen/spec.html @@ -1,12 +1,12 @@ -[spec]

    4 Specification [spec]

    4.1 External [spec.ext]

    The specification of the mp-units library subsumes +[spec]

    4 Specification [spec]

    4.1 External [spec.ext]

    The specification of the mp-units library subsumes N4971, [description], N4971, [requirements], N4971, [concepts.equality], and SD-8, all assumingly amended for the context of this library.
    [Note 1: 
    This means that, non exhaustively,
    • ​::​mp_units2 is a reserved namespace, and
    • std​::​vector<mp_units​::​type> is a program-defined specialization and a library-defined specialization -from the point of view of the C++ standard library and the mp-units library, respectively.
    — end note]
    The mp-units library is not part of the C++ implementation.

    4.2 Categories [spec.cats]

    Detailed specifications for each of the components in the library are in +from the point of view of the C++ standard library and the mp-units library, respectively.
    — end note]
    The mp-units library is not part of the C++ implementation.

    4.2 Categories [spec.cats]

    Detailed specifications for each of the components in the library are in [qties][qties], -as shown in Table 1.
    Table 1: Library categories [tab:lib.cats]
    Clause
    Category
    Quantities library
    The quantities library ([qties]) -describes components for dealing with quantities.

    4.3 Modules [spec.mods]

    The mp-units library provides the +as shown in Table 1.
    Table 1: Library categories [tab:lib.cats]
    Clause
    Category
    Quantities library
    The quantities library ([qties]) +describes components for dealing with quantities.

    4.3 Modules [spec.mods]

    The mp-units library provides the mp-units modules, -shown in Table 2.
    Table 2: mp-units modules [tab:modules]
    mp_units
    mp_units.core
    mp_units.systems

    4.4 Library-wide requirements [spec.reqs]

    4.4.1 Reserved names [spec.res.names]

    The mp-units library reserves macro names that start with +shown in Table 2.
    Table 2: mp-units modules [tab:modules]
    mp_units
    mp_units.core
    mp_units.systems

    4.4 Library-wide requirements [spec.reqs]

    4.4.1 Reserved names [spec.res.names]

    The mp-units library reserves macro names that start with MP_UNITSdigit-sequence_.
    \ No newline at end of file diff --git a/HEAD/api_reference/gen/spec.mods.html b/HEAD/api_reference/gen/spec.mods.html index 41212ddd..14a6aee4 100644 --- a/HEAD/api_reference/gen/spec.mods.html +++ b/HEAD/api_reference/gen/spec.mods.html @@ -1,3 +1,3 @@ -[spec.mods]

    4 Specification [spec]

    4.3 Modules [spec.mods]

    The mp-units library provides the +[spec.mods]

    4 Specification [spec]

    4.3 Modules [spec.mods]

    The mp-units library provides the mp-units modules, shown in Table 2.
    Table 2: mp-units modules [tab:modules]
    mp_units
    mp_units.core
    mp_units.systems
    \ No newline at end of file diff --git a/HEAD/api_reference/gen/spec.reqs.html b/HEAD/api_reference/gen/spec.reqs.html index f093540b..2080d1e2 100644 --- a/HEAD/api_reference/gen/spec.reqs.html +++ b/HEAD/api_reference/gen/spec.reqs.html @@ -1,2 +1,2 @@ -[spec.reqs]

    4 Specification [spec]

    4.4 Library-wide requirements [spec.reqs]

    4.4.1 Reserved names [spec.res.names]

    The mp-units library reserves macro names that start with +[spec.reqs]

    4 Specification [spec]

    4.4 Library-wide requirements [spec.reqs]

    4.4.1 Reserved names [spec.res.names]

    The mp-units library reserves macro names that start with MP_UNITSdigit-sequence_.
    \ No newline at end of file diff --git a/HEAD/api_reference/gen/spec.res.names.html b/HEAD/api_reference/gen/spec.res.names.html index b35621b2..8d9361ff 100644 --- a/HEAD/api_reference/gen/spec.res.names.html +++ b/HEAD/api_reference/gen/spec.res.names.html @@ -1,2 +1,2 @@ -[spec.res.names]

    4 Specification [spec]

    4.4 Library-wide requirements [spec.reqs]

    4.4.1 Reserved names [spec.res.names]

    The mp-units library reserves macro names that start with +[spec.res.names]

    4 Specification [spec]

    4.4 Library-wide requirements [spec.reqs]

    4.4.1 Reserved names [spec.res.names]

    The mp-units library reserves macro names that start with MP_UNITSdigit-sequence_.
    \ No newline at end of file diff --git a/HEAD/assets/images/social/blog/archive/2024/page/2.png b/HEAD/assets/images/social/blog/archive/2024/page/2.png new file mode 100644 index 0000000000000000000000000000000000000000..19c341c2d780775d7d4320313de2d0c4d49a1adf GIT binary patch literal 24284 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz*NS;#=yYf?@%4Xz!10C)5S5QV$R#Ux%YSNioSg-arxR?`FEwiA6mgzq7s(xZT^buFKF{X+-tVtu2BJIF4uEtk zTpZOrfB|;;d>JUN9Nw1X-ZjyayQzInc3=FL_qU9^y1A6p)o+KIu35FJ<7?_u!^(fJ zc6{%>S$KTLOvC!8Z8_6j+nyeA-5#2{n}dOYA>q1L*Qdv))xY)Y&%I*5Yg^u|w?#s! z|4#9KoPBZf{y{XsEBM3?x4o$K*R=VE#wsY~L6U^2ryQjERXWp9h@zt9?tP<<9+2Gu>@7oiLjQwUe^;&rZz$P)3=0{7F z$CuW8$%vlyHt3s_?Z4kMOTW)FwF0L;j~RF7%=z(kIe-7(+vcasG^^+Sy=~qdU;pdF ziM!X!w&ybx(7(q-=`-%fqA^_2oneX*o zz1yj8E}fT~DY3n0UdY?8hxs$)`QvMo#I$bhb*|ppy_x@|;Qz|pFpx$aMHU8z1{Mvi z6W!V8eBQlT-2sZTjY+kUTkFGeZ%lf7sqE#g&227$j&a*gFM!&^@LYaZJkRT!YPVD0 zgys32(~HZ0;1pDFp)U8)ALs9<%OtN%250C^Yjzmu@0@5Yg)HcO`@82ZSCrI`*NyG@=CMsotvxY z+APWb^ZHcs;?kGfF6+rjTI-+tdo*}s>S|#%28M>c&X*Vc+41X(<4wKAVM2R?3i{XC z)du|eJ@tE%bL7`x5l=hg4L4Tb{dRNlw)SvA!R4}7bnU8R?(2lHFfdG*p%tMjun}e>L~5(F$eb4L7n) zHBWS(TkExI@4eN3&v|ot&lWkdYk$qETctX znZDPJ6@RZ67ybIRdG5*;AAjw+Gsh+Otqh{3iKOl32})rTtKJ%U`r1)V^Zs*Xk_-$Cn!n!^va6+K-rcvv{r06FZwlFu z`ODR*-(EU_$rx0GFKFDVsoVA6(sJhJ_1{?k7k@gCvH5Ugg35f!2-6jrm)}2E)9>p4 z^WvgLZjeB{%vJMqc1zs9yu6|`%T%-DXtvo=@5|GU=q^@2nr%ESH~;e9+{~JXKlT;= z+VJk;Uf;{0B<#A{{8)GJ^dtImb0r=>TeIToUU^AteZT)Fg$th@y!-f4@~?eVl3`zn0zd_Okl$KT-KOI0E-4&<$UGxqk2M_*sI&&(_^} zYRkaDkoBoG@b4n;*RR@xR9$!R@%fx!Y`I#J87mYoaaDia{`#10-V3L(L~OmXDl<^# z-tO8vwO2o0{Wsy|#cd{4TXcK5`QJ;1|NA=i$7AE*$B&h(kG|KJmt5-0Rkmwe`tG!g zn`1ZsI5KhXqptmXWa=xbUdg?`yF2-F#e>)CM`p5@-+%eF?Cflp-OqfJQs(o0oI3f} z@tgMbTF1_CX>g9z+7W+z) z{^v};sIY3)B&kH#nwLlZ72e)_IqBpq-OJp{_4D?J-;2Gapw83x=Cb0v9p9d4Xs)`O z-{0T=M)a@M_MXLcKMHbu9_v^zFf1tC_3236#f_m;hw|YBn z1vQrvM^oE+d&pK|Hsr}#aXhzn< ztG9fgemr!=H83nr5>)!y$#aRcf6WoTZ=WAg^SSSOcC0)D!-n@S@2pbUXR#`N+vyu? z=gjF?XnX6*kIn7J&#nIWb((6c;UfQbpJ`JC<7KYu*Zse8C1OWb@;2{8ewGML4ej+E zv*qRp@b9%X-8@{a=0X;MKIWUa1?FZQrxR^UuU=>z+3$y|~i# z&W{5>DpKC;(YPHY$h>=7m;4<2HBlZVe-4}jWum8|Q@6hQzPY|iQz`3SxQ^1JE3@5? zKl{`*H_m!h{_z|8Yd6o0n{84bD)Y73J?U!Orj8rm+JE-zS*WbD&OYIHJ+>@o{*P;O z*Sj~RpI~BOi2OEnGP}#|G~Z3JZgWFJuKj6UUZnq5>B_hLw{OK1KbO9#*J>+}u=GLl zb{pyM`z_Od@855nAF2}{F4kZ3`AF9Fe@`Bkm(A)mt~~gvBLC&Bir2q3m+xAa>X`^? zPd!_IXT$C4`QN*jKfYKfuX6XY*xJtL%XGRvn$H!U8}&|RL2XjX`n_rgR;^jpb-C`3 zi;eNi=Ck+I&qa$qe!i~9)80y}MazXKN*%@z*eoQzoTb}Ue-APTu@}IwQ zrXR}V*bwyLVel)Zr0L$b>i+&%lC^%XZMN&0`!R93$=|Onb*<*vP{vbnZ+p($XFq-} z7JjTQF2C#Y>vs7Ib-&j~PZK$|>bBj^+xwKaoi&pBaklzB(2_T4P?;H!u& zRmmlJTZ=8GzfATE&%YD&c5Ao$m#*D$b@|JKmCdJzyG+-9entiZmXBg z{OjlZD#}#1YyCVUgMC%MSKriYy}RNro6DO^zs^1l{I)PPLr^eUJ3H>#Hc*S^dKdTS ztR0)mvbe6YmE?v#|2HY+=B-!8GhcmM*3>oz28P|6>wl*e-rQKbDVA+_!Oe}eHRru8j5i1=sF&47J)CzYYS+43*}mPM zf^TVe@vpfRAQu1gxAw>9=Ve3RrXQ}_)|qH)f8#{Ku}NDCe|H-{ns#w=c~lYy1H*^J zc>CM{6a95}A0~KiD;2+Qygldc?)~*<`g$Gf=bLG)`}6wrO}*AwfrPhD?e=i~{OvVc zgd_CT3;pxH{iU-{JuaW#d*ki1uD#YK{ql3{b@tWWTJYn^`+42$_h;R12xVemsP1OA z-rC_Wd)4}O>XM^NkAGSDam&HImC3)p*S=bD57aI=y2UknQ!JOMKtifVZCdEkM~8oB z?#*|OtaNc%b90NTRczsLx!;=iPhb92^80-D=0_I`KR?=({QJmJRb}+)_J&7#I{@uCq)2ptpbb+g!G?Y*FUjrhU2Dc5AkHI>yu< zdjM*f_y}6QI z=JOSX+~+I&<#>1X-^RJqXA9f!tEiAESqo}${y5OEZtbH*%HP(1{Tdp2JM30SXz0?d zeRJl_$q1StzWYb@&m%Wt;smEoeOdcnP|%gN@~Yp&^(S53-^lN;C`s~}wO{M4X@EV` zn!R^EGFydL=RVr=>%ZIT%)dq5lMbCYdGi~4R`S*D#i!@~t1bR{ZN}c5+BNrfsLIKj z>x1yRy|2&i_|Wn9aeTPk?#uEG&edBw#Z+52E^C|2!^qH3dwKgg2^m$_t^Z%`Epm>W zQ}H-?W0iB&{_rgtnmy|4Y%M=}|JD2Xm;2+dp43eKTmK4=8X9hDTiP!l7BofvzEyHT z&8utAFGn+cRXcEMLdpL$Y10kfHa2C?ZKp*|5ji&9Un=13t?A2j*M0vRwq|u5Q^Mq? zJr;Y)e^)%cyVQCwsL66;eQc3`_KmCeW42_5iExMI-Fdmye7(K)tal&er+=M&dhyrv z|B<=Qf9m&timUnkW})E=XXA}lTQtN#-6g?|Z}oTTTkJ{q%GJ`+PJTA2H1mJl#XUO| zw2TZkYu+~PzLysTr zUU500ySGf%mc6|nU$On(_vnrLbi~%(l9(Gk_05-G_UmoT z*8RKw+A#6msf@4~f#dvdWUkLOO<8_HJ=1JTZtthAQyM2u-+lRYe*L2lKi&#YPR>pZ z)rsA#nWhsdt?v^lvz+JcuD`P`sj+^%?d^Uf{NKM*e$vn6Z>^5~^72N_@_(nawUQ5> z;+b_i`9onBN6}W_UX*m@0a)Q34ZOcET{dZr)SA;Z{w`eyWGLz$EW}Q=e70vZPR?A zf-?Fv)gTdc}Ip7rqRn$*{iR@LvBHZ6*gp<(a+t?7K7hyEP@KYp&4G5o%8_*^3cKbbqKpl0%(J99wAk&S(7 z;GJJrrc~q}+w|k*aem+5doQotv&hJAXJrYvCvvglZ?ePnu!~zX?8EZ!2!U$t?dfm# zSl-{8f2Qxa`kDUX_V?oHa(8UoO7dl8qeR?21MAk@4UsbzTi+XgFIK92kIm&NK@1ED zyXVa5czsT4(#E}WGAy7&2#F>mRva>tSn1?gy))Iwlf1d_ljnn`4<$l>M z7a0bIh9{QW>X%o%+7+y{zE66ie(Y||U-ggYMQq%sv$k}ro^IDkdrN(*EgI{>?eFjU z-23CBv+%0Dbx#^)A02%^H*WntWu?A<50yVYx^ndEyXS}J?Rhsv!gNFNskd5MtCOzq z_8%>tEWUKFT9C338v{dw$%(TkJ71rZ3VQw_D}TdkVIliH{sqYsr|-`7k$(OA_Us5J z&;UA9d&XU}#%{Jp*V(V;zC zuHOu}Cx2c2e&mF=LEkdLBQYzM@3}MQ$G4l#(no#fo?5kP$CK~+N1m{*&c6F>ZsqDn z%Jx-TZoU3lxzq5c`tzfVva^?OJk&OI_U7E2`7^f|XlcDYG(~rs022d)gDq$rLFVrE zMpX33JhOTH!*u6JzkgVy?Sq4$OLiMpS{`d&X}h2^|9ZZBRu=G_NLfVcCO&D)Y11*##xP#HAeZ}S zar^h4+wpTIz76`O+51|PiGiVkEdX3CEiOE_uj@wHrX)w+|4-gNT5)vFoE0B`HSM|M zR%-S5_rB6&4>UB5)K@5ihj0~K#rt1~GVj`Us!Wo1onUTys6O+qZC%~&prM}MBH-cO zB@4i9gI^1BraMlHt^Kt?BR6QmTcdB1;I!azaCzS=*;=cupzx2J@2C4H*!}CdGRfaO zV9i&8x+fj_@hkK9yEm&(t(qk+7#8wwb~pF_x?2k}0)u9}HTuR0HfF`r(|vD+e{av9 z_SR_AGS|YylAOqxxAV)+&Q96AWeun+u;a}QyPJB+^Ak?jFfcHzXbto2eza;bd&=&f zHNS4HWPaQw{42ED);|CKT>0XwCz&7RpWiRN+H6Yd?kR4$_iGO^Ffb^v&bNMd;KjXd zCbv^lLOlcPw&>}u`sV-nQEj>LXG9xY$`-UH`--ywbl7=q)!htgM`SN zgW~RAL4!@3V%a#a?hN&;DGd3#bn23RP>YA5Y;p4GM^fKwn`C1Po%X-DvB?57f(G{G zjb8n^H|(vp2>5KM29KDXBE(WPX*6J?TbQuQpKF-ZSQZveX_tKis% zcNh2V+`Hbx_xH1-g~v9$yQ#PMB4pf_*H7+}>21{w)2%W$q^sYBn&o&mDs?x@x1i?T z)n%6;qy45YZd|f+yV9Gk{uiof(xE>&(+|X*+B~@q>@5c9ynyMA9jV#dyc6`F-t@Ew z`{_!;$5*{K^&0n1LFg`jw)RvR=bNQ!XTH8!G8^L14?lkV1Sz}nf^**767Zyh1Fu|F zb)HV_Zq3`N8>UC@Dhsyx^6gH}^ouVzz#~^|+~K)B`|bYcZ9AQy|9SiK`@OBJ-!x9m z1H0%(YqXnxm+0%$n_}6jJ4Iigesq1Ydg|^TH&1Y;+r1&-=`qkC6IlAby{W3$8k65z zkO18vy}vT4NGCE`U#BepKXh+RcIuSykY#)C zm#kXVbt5Kj;>3O3T%U|Cz5fkrXl;+mniUA~MssSm`SJDg=l?vr!&tD@2 zrJZ#4m~Q5K^SNfz!;h@ueYxIHU44;f8}piYdppf(YwymvSpDWTB(AvYYto|5#O||O z{2eqLx6Jit=KJz&*VHrdI~CvlU3R(a>+Iy4x4!5f)IM{*JI$Bt(!KY;K}|=Hwqw82 zr6I9+Xccej$J0FL4{4n^-5ciHZFK3o_2;nECHG5aZmh^%b2nt(x4PM4Pu;sG9oq8! z_r7>LJI%0MjnfhTbCf|dLk&^CP8VN(ym#qqqpJRMYrTvvy`PckZFDJr*PcJ`F7uH9@5vG>xf-snf^{d*=~tp1X7Uq|`xKC9%+H8Jzg%ybG3 z73}YyKY!xB-Pm~k>Y1@G!}r*)_qTVty8VjXlokwX zvAF$Ow_cMw{J6C7^wcHq?PQHVSNg?oQ3EOO`Qlp&4t9@&zs^4WIJw=}oO^Zs^stGO zC(qpX|4)pOx%B_rpD!mDSGv0WlDo9H)a}>blZW3Q`E~Z?{mtF8pap9A9vfq|v**t& zd%<3kBlmW;c>0p}>1w)N)0eAf>#uQLZGP;2T!p!E?eixtpaJ{0fBk0d*Lqh`nRe@U z>UD6WO<2^M8vXcLyIRVU_t%!X8g7VQ-ScJd)8Z!w z1;)$}SLb;(>6+dB89Q~}RVSB4{a#WAH7R;q*s)&zKL6_dM_VgFrCH|ta`)tA`kmf+ zwTfoBnKy2_goX;n@BMpq$Lp!zjjHA=^Suz*duzEl%bt%1KWTS6X#FAx&E#C{tQ|9|8F;g2BLfJJ+DoDD*Ey0{+`ZgH~(`#_S)HP3SUwz`t0=O z=|`ON&wIzWFL7xAO@@Bmuyv79UPVI9lHUpY6K!uFOWb>F>GsP~pmA(a#~aj~?YWo! za8+;NJN9d9B+waSd`h90As6l%C&wJ&M$J3XksVu21xwFUOTfKaz`*G7VJj?p~-^k{A zbzi!6AJjc~{P_9uwe~^k5c5{8Skv|Ty}bC;%z164=RU|4I+Hv$xA%4m z=hfJ_`Ola??Yj{u0bE&o{`gG$TBCchcMO)xO*7N%(C_hz{}3LzH8)3F>$1(!z9~=A zcY`K=GkE6B+hG90Yt`>hHPh@^?I$S_{_pG4Enj!4pZARu0bzH!8;W+7A@40R3$DMo zxNXa|x6{|(meKc#mHA(lnPy{F7uTFG^#9|;y^G4*zqHo9@7KPm3U;>1iZ!dcq~#>! zkMq8esoeSUw(Xx__pg1?ZvK5Mxx<&QJ%6hr^VTE~&Ik;WaIW6c2bxQ3yc^~I-OP7! z=;cKkXU_Moof^8a?D90w$fr-_2CI8BcG}#Vwbe#!?Y$cdw(eW+>X{f*`)k3Lui=3^ zbA2w`ZtlAR&N>Rd^X6~T0L{nvS+9t`^-Cu=NZ`Kp`vp5*OiRCfEnVwc&K;ri{*f~0 z{eLF(uitZL4yfh5s>3BW=ik)HY%c3f&g}z7V%@1lTfVyAy~zxkPQRoQy!>kImksj@ zA3gY@>$_%s*Qr$+>sR=MR9syi-2LNLCiCTM@yqCl$1KQG+={OIXR?@QO@zd{OJliiR6UzM)T z`{tU~zWRR~wtTx8QS)sF^W!hgyOyuruN$rX_!#@~0n7o7G2zK;tkDY`)RZ`s3^Wt-eup4ozYp- z(V^}CMt*yIp^u4v-W=)O;-XKE=IhG}+FR5|xc!RXz0w9$xk!yVHG!Po60etXrb3eCa&A;q+VMvGBBL{cJET@$LY_P9S>d3bK-`rUD=U;7x(&J z-tmQB|JWBdlgTTxUoZQ3{Jf0ha-O%dHdg<6y7T47dzVTjU(f$_y0bfP^{Fz!>eYAV z%&|z0_`W0K$iKo*6V_c^v}D7%+OyFc72j3XmfiVxY4^u(Yu?CRzqu`P@{cbU*^j9A zzmavW+OjTK{;BBHk3W9=1P|QaGf#7OP5maf`Iwd8%3p7nDnIHH{=m-n`r9J^al2AZ+I_**Apr{TUo-={y`XZ|eZiyiO7BL`z2l~3>Mh?AX_ z{zh)K*_5LfvfuabJbgX=jog*_46FILJ{La*4Y6MLlNDhv@%f*>NPL-IpZq;*Gf)Zm zw)VXrsIPNPvib38^{@Sx)Lzamvr0aB>&HRc%Q}fQ2`%1mGxO(*A-rL7#$j_16 zsrl}W#sMaVhA+EbE_(QJEzg{J-xH^XhJx2w{Qln48!COusBV8r_O&Gn>#VCiYTjOP z44g6l=H33hx(p}Kl!oM9_OI#(ye@*e%b0}7*XMXQYU!OYP)YC-)T8Oy z|8h>o?KPgwck(|qT`jyDn}3Ws|E=xjjc#9F3he)Nz}?hJ3b-%U3cqh zv$Q{PSNeVLWUo{JP4b--{CKC_FMC3OiqfM$hpUd=kUrPB_*dDP7q$QHTRK1fnC*8e zqe4{BFe~AC#qYMwk3ow^-pKV<&Uy7pdO7c^;0jg-h9&n8g-SoZwtSh%jlaLjGbO** z*M@-ROA9a5E$0c)%m)Yud`n2cxZJ;NA&zzN_%d3&u9$gUhCcc=-ukR z{{AoTr%e4leQNlTpZjanS{Kb7!CL zeROD#)mC#*d3|ZUbN3^O^2e5-S;OXg<(H>*?fCq3X5r}&Hjm{mw^e2yJ}3<3jbms+wEr zdUp#RD)P$3x#m>c|Nm}(eCgM}CeI32^+)SV2R{G6#lUc)M>X5*X#TtzcOHD#)jQJ- z>Km{B^P%U*`TsKF>b&oyTv>1a-d9j?e%r^_{_=wP_Y2Bu-tTFavbpg4tnlR4@M=Nh z4P}d$XxPvD_f4~~;{CUqda6oF)7IS;Y2H6|UdfL|f_oqJ>B~m{U-T;R=dQD$B@agz zUHv+H-OU-tSK5IF6G5}1udcR(Mnxt_=6ZD}{qcS7HvO7vruRZM_T*Z`&#Kc?^l1?9P2RY z?zfxD!opoHE?e^BWcL62B3Srv{rr{T_IGbjJGORuuSalb>2*+cKQ4OwNT<1-Sm@V| zKOSKVJ%RUt^5f&t_Oz{_^m}wc-r7gE)A>6+KZhUx z94vP9bFkR)9hTZj|4#94OwGQ_y!OtVIiUVHTS=}cxK(m#f3VD!_}N?LRmF$zuc}$} zAxmHRz^&HL{I4a&dtXd_YqV&?&HUa zdmqo&Kf5CM_c0s4uOBb>%S*kTWqxL*8UusF-9Im9W)?o}{JYrw_NAQZLO&~a8ZL2v zEpcgaY0c9oj2jo`WS@!LXSYm0O8Bz)+D=gK2UK8peNEk%cX^t|?I=mnsi6~R3kS}a zFYep@3Dlr@ab=Umx9saWd@pX;@V&XCRJAQzY^`_qroZ3HjM9Jp`f=I#@}^ieO`(LV z3sOB3|Gc~O>ukWSfNiGp=I${_(~p)veJ!u=k{av9jjn|F?FOK}Ux}5KPndVg!-BbPlVx!#t zOZk*_En`B^WFw!>FS%Se=7QZ?(m{Cy-4Z$>bk0J zrx);jo7b_W5j0t}evZuozg*DD7QR2f?tVN!J?)K=NM}dI)4NMQPW)eMQup=8605uF z_WI`MtaenNdJ9T`$NAsPDcXHKO{d%O{vQ2*KQHx29bVnR&$JM<-o{Gx=KtbT4O7wz zOhE-h{(M`NUnN-=7kp=7V0e}HcG;&NFO}b??Cz;O<}VLwMrfTclf2T%@Y)&FP1&;M z@V|im-r4fc|NL1QrQf`I&8n`||2}5j`TXn6l=q^7g(ds_G`Ii!^RYHKZ*#%bV-~-k z`yacsb*pvY`=cwn9}DlV)qCoDv${M(?l|v?ztvf19*2bg-L<7Bf3D$@gYVcG7?vD= ztADOzC3iSzSS0_|p{s?zyGw7^&wL}CPpzdzUO`tv6)bF6FjPkCQ_)jqEG=<00oxV`TuZv6b{+VW*fYSwe}t^b>TKjQex zbwx!=|9;F=UTknbKa+vs#%<8dqkZKKoi#qcPab}MS4iF4>g+3p5`({hF%g-Q-(~OiSlgmON&Dym*n(*35|K zJnsWnr?!C7@2k!7FQb>AXJKIQXtR!=C;9$N^whUTQfteft?jaopEvWZ(F%6PYkYk6 z3t~^Hzg&AeMy|g4-`%Ra-w$qozUx^y>f4vWeYX$-hS_KDagJ>&fSl8{CxCKaxXgr!-UA$+d__<~m>h#`uRq2UqZpZBBeGpe$o;ml{R58&jziv$|oiX?GjUSbo+izZU zF6F4{d$;|$@PANkc67a6X~o=c%*+f7lb*i2o__rH=CG9AJ#Oi5-iQ{K%Z7_jlwn#U z%k$=%)>E_OW%?_>*Iv)lS|7Y4C?w!_vN!+xyLL_$JFO51DJUC4236=IHqI4EziXC)RBG)V1TJ&YCT|KQ?~cZQD3+Z!<$Sd#+b^ zP~PNqla<2qZ%ithy>)ih^<~c8k22;ys-A7K|6lfc^|SG!(c6}7OZ?Tau9|PT)N6~S ztCnck*Ok9K5fxwmnE9VG2Lpp=`TyC)kG4vl-W2P$_~WlLsfGV%7jKGX%TzdU%klKG zmHLOHLfah{tEsyFEZtEaxptlPhT!fgzvpes@I94lw`S2Mt$WeC%$AzfT5s>zbLZ~+ z{HqbiHAC%f>LcDwY{M0W_wpm#( zoqwdR;{A<`z&TMCMyUs1Ro&m78CbW)%Wz8MhN9%P<_lim-B@|b^lZ$es1IATKZob_ z?3){X?bokGO?yDarr4T0J5FbV{Fao_Z&r9!lR3LIx6(DW=HdC|MOv@6DcUnIT-YEd zX|5kPYugde$6vo(+M@dL#ExHY-})4BY$z+ZFMV@nSj7*RqXS_w|)cD!SkOw)^x4=hpsQ@~`m3zpd7tANMYO{pi>4<4gClF)%1>cI%H9 z;NO$_e%Y?72Wu@2tNt|QOm~#x+yGv13M!ONy$!nAvMzVCn&$WU>lm_=Z(f^nd&w@J z^@=7(EUvn3H}ie$E-n-E`t|xBr%y{p9^znNNC`^~4Xt_le*Lj(@9U|%r|dmf?S1{| z^#9+yLc(skEj1KONWD2#{hR;KmILMD>w7ytXVrTp6eh;4N_D+??MsVX=}n#WI}9qd zqotGPWIZ;Y-qUeOjdkm;Z|lPEbzc;Iw*2cq1_p=2Gk4e2&iQ|OdGfhWUvKKAt~Y$X zfBwxqqSBjUxiZxboLY2kscYfcna)9Z-`kfjUsh6^Sof`Mr(S1ytlzKGOWLHC+giTA z@b}S~=H1s{-7=Nlek44<-gNDEb_NEidpB-sKUyL!-#>ks?#VLE&hMADs1`oz?LU6w zruL>-E=h$0rxwN6eEN_v`O%trUuU0wye)nC(ksgh^uJ0*+zgp9ea-Pr3y)=%&k`3u zvfjSdW$pU?-`1HYe|&Yt`~o`z!=&_Ei%bhI`Su?-E#D{jIeb>+m&DKEc^%pBYLxx< zeB1~c``mU~(Rq^T)l~VSUygSl2fKgu+j)1bzprm)@|Rol!lsK@YR>yI-ILeSZ+G$I z<8AKG!?xbO^KYx<=}UIMxfvKvtb-0if|keibi04+0!^0w-My{n(xN7h3*jr+0z*YN z?ptG{c0OMA`#wYKcM`_I8@BTcB&0fmW-_+x%grs?otkZK9k`BBHFXZ(`@44g3|8f@ zU3WJsP;&nN&)#O*EDQ~9S)irmpyAAZ`B@X*1}$(@&0c%WZh?Wl`MG0 zeah{<7Nv!MKEC|&cIAOx^lkV?Nh>T$NJZ16q)dib<#pfKi?)!JTzFyUAO0Mtey^IVD3Z5(x zyiY(qoAY*s5p!?FeeDkijc{Lz5j6F@Wbyakr-^|v5xa#|-q#oV+5EV6XUkn_1_p*n zE)7>1`rh3({8xF@aO=I}8SeG<5AXi?TzuI$KvaI(lEPn40{4QJH*Vck_V?MRAE)le zd)@}ym&p<#Sq5tHU%0C77U=jk?b4eUZzHwAgRhONer!@MFg z`#H?QNQ{A@;h1;BRL8%&xAYueZ>c#;Tztu$vY)%of(9eI&OQ~DT+t(|nmecNSLfkH zv7gnp?kc-8M-;RGY3bX0pdl0&rZqe__t$Q&__Ql{QSRnjtb*3Jwk%aT_vhtg!}OoO zctVc#O)~S7e|cY1&+=D8RBUu)sObFtxjrEwx9-S;Z1-)L$`~6p{YdbAJ5{UgTAn*| zLD~Ax_VdTI-|L-qNPVM``8XtGg82UZH7RS?@BeyI6I9A)?zU%OU{IOLpnVopZTiPm zdwt2dzQ*tE`d`Oa7v7gHz7%!&o|%1mc53Re_Y;p4{;E&s@3os7b>-D9&=C9f|L@ms zxhD?_aIc1`Zn|Dvk2|yd`|4t&uC4t0|DL&7o}{hiURPI_pV!W?JG~5<_ON#UBnv-K zDCN&H+;Q!C{MY{QWY8?jTF{<~NnQ<8K{d?B6XyOs&EK+vmwy8_R%^c7=P%#6D%ULU z=B%RGcjnC5a>sf(-`^=y)Ab6xA6Yzo;_~OAvAbJh-P<~AJG;8NKlfK}z7)j_@>pcu zHtq}_(1^mm^?h9vYpt%V{3}0io>ct*=h>O-UNK9b4&vYN>GLJwgsEan|8?YQ`R~1V z%j1Ll-pCpM3+3hx70W2efrN`XES$x z@0(=hCmStx{H!>?fAxL_28IhWI5xaeR9Anre!jicImvsA{ocN>tSyWA)h@nB>+tS1 z`Y~G#pPK1lg$!Q zTJrcfU#GU;i}2;!&iloQJpcRX<&8@Y%bCwbZL@o7cK7zQWl!(zwKDO4`KvcI`n5@N zPWU7{KkaMF_w5m8U|{%W%CyF6$GbI(ppyL6m2Xqarym0iaGOmJU$S#mENF@8soY;> zd6Dmbi-|sQ1vM47&fHhwdu!UOx4e(H1c63H7^+nccwL;T{;mJDzReQ9+~eos1ef2l zvAUM8=U*JUdwWrBq)yyk&823bap*Z!axNAtqF0~r-8lK==kV+Am;K+my=OA0H_fmi zooS6o&8rpn3QsTZUlDx!BzM^HPIEiC)#iDg#i3h2zv@}48GC=x5(BpK{Mhx?a`p>~ zPvyo{ns2qr-elf;xr=Ac4$vZw-d={)(?C0X{yhEcemyhn(izq4$dK^uO=1EHoQFj%IkU6w=LG*Nnit|k2jqRtHnUeY2N+$ivnkl(>y`^Q;6p>|j z%FZ6sExgp*e|*W$)kXo4ckh0Cvt>%U1!zyj?|o)kR$FyeUi}JMP_g^fhMxRun@T?( zX<^me+L(BRX`qY(m-9%rn!@K{buz6ih zg^2jFeKPOL{rx&miI_KMt$|qR)9_VsZuHb6m;b+?^5V{_GUL9iqHl_}kKQ;}E!nv0 zuC#f&>)Pgt|M!;1%&GP0pYnZq*8M#e|07>D)5U7y7+5 zTkJURi)l0MARVjDQmvQsf*}{|W<2yvQ&+*y~8ng)BUv2kv?|RVQ z#oBI$YsYTL0$`)Z@S`a-wnJNyg`3^#sr zZs>@&GXo{{jWf3DY(D)HyeVkkyMGlaZ}#-uV`pGs$cSNyaB(?OJX!qcg8X~Z_B+yZ z*4*5oy0%t7VyEG{AE!?nKC0$Fy2Um7(k)Os=E9Gs>AM*wB|G1|_5&0?`tq|S=3D)0 z`0-@o-p3RE-oCbS{i#)}D)K%p`th6l{jvS=b45Y(FzZ11`bPMZBd*&`&pdN~Gj-P% zz0TxcrCo=sxA!w!nf1?mJKJ^kr9~N0Ap)+fJ2zH(yMlVups|vf-q%3ZgC>z49bMU- zeDv3*oarF%nJ|GTdl-byf_L#TjBX5N7~KrZFuDPlfnjvh^JrnfFj^Rlo(2F~2s2t3 z;3*8ID(22M?ObK8*AK$0{Uj&6ElODb=}x&{H%K77z9J1Y8hQ4|QTN5K`c6Myr(eG$ z?E3HG?DMlko*eyeou1*dE4q>Thw?w{N`9{i^0VxoJ(KD>Ilx?a!ZyegZvxa#;n`~O#KpPm|Oz9M?{j6at@Kl(nszbBB{ z+I{ykUnP5e^QdVe#}3-wKDITTx3j#y&avj#3+7F+S_}+Vx+EjyjjI0qdGWosI_uBP z*Y;M%vrIKRKu-Ms^Z07hxXoq3m1?Jzoy~GrcKqLCrtK$vOBdW|-Jbq_>-OHi_rmfg z%_$4`-q8`UDJ^);$II$Tm#1~&-=P)qb&}F>VzUFoeXousvkLgpVhF0%s+k2gL zf0f$mw>PWb<|gmoes#9U+$b@3mm@cBY70rniHbivdVhaKiAi>l0BBS7N~|$J?LF%Lodl|NnCmwDrrY^y+q7 z1_sb3hpiLlZ+~k)Gc|g$WSpxDXkYTh<-y$@9XlSa*AM4je-FF@@z&e*t}ZU8CmjOq z#ozsQd+FsxpvhUDmlv&Oi7fe79{)9$pMl|@{-(w$prvj8@*>aWuNi~pLAT|s?fF<7 zc4WP~f8Xx-*;`MSfd);c`%4L=^S$1;Hr6#2v~%rU&Ck6*9$yY#yl2rSzpr!ZBhLSL zv|=A<@xr1V2KJy;wxG?opw7pi7fsENi;sWpHM~6i$i(~g71guv$<8{yd;gCN7nhoE z{`yCA&-<;umR}c_H|2g^ri)8V{r??O-`gw;3#RY*GQ$ou-udFfA`8%Z;3urB!QICF z)kR)8H+Oxm&bqzEQ|I^L2*_Ic-OZ(aSI|72Y{c>JkU0C_&_tfu?lDFH;p7u>X?D|I?trOk)eXpd& z_kV z`Qx|8rq*-o>+(M``u`ty8y4PMwd3C*=SLgvyHM9bHC}>(%KN?t?D>@Ul>s#UI_>Yn#}_v(F_<@NhXLsLfY>@V=G|Mn%Jb~XmtO}R z77}u|u+qiFCwhz8ue!hQvff&4*Xq>odnKOE^IFdKwt4rRIUSLwuN`0f_}S6(@-rp8 zujj4${ycngzwAYAB_+_@aCy(oznc!UA3xU}Dt&5E=;cKgZx`f!-0U9oA2iR$>)LRY zp=wL6*yDUF^>6w2bAD%o_NJ}aC;J$LrTcl(>&+^8eh{iQ|3``?Iiho?RZS=F@X z&X41w$3t$P*kxdE4jO+4VLiEv+I~AeevH`MJz3^=S)QPIyh+XS^P4Qn{zm3$+?J9) zwaqQh&rd}BnX8LSWTk7)-}glqPOVyX_gc*TZ`P|`SCr*M%J|1rd-1%wmbLu4^>(dJ zP!SBu8+Cs!wEVa>H~-46X*oSd`|5tKJp8!cPj18IZ1DVXxug^*&4h$p`&aC{{nwuL zvP(a`NlEH?oees!;Bdd3%-LBYIrVE}KdTjjMkUrXS09;LUu&6Hn{`U>cKwq2N!~Jj_v=&P#XUO`mS1Nt%@zgivj;`C_@7rZ zC2SM_>Al~*`+R;lC=Gy)esDR$oPYN2+pVAt%vz7l{eAlW#YP?N`a1i2g)IX^%4CMs zj4`FB8Y1@Zw5cmNf1{%2&z}`5R&_1rdn0h)zCOYvJ4nEO*MkQ?ZhyX9eyctuV0)P1 zuUV598`zs4I~ON-|L^(RhGpkIy|}b06STp(=IN7vprt#7x1aa*e6IUgvNrqYD^2F@ z?ctZj*LJ@C_cv{iU2!C+WV+1vO60M|KmyG?fo16eVn=S<8Ae2 zNA`$HFYrMkxBYSB_Gia_oqcM! zCVlpfe@)Jd;-^phc-EK=wCpB(uVAs+u}8J@ZQmVu`|#@S?(4_+-^)samVb&JZ7uw@ zA@AeXVD`6PmhN46^=oZygw}aKwPQQ>owHw)4%+pxul)P%kC(QnZcNQ~mASn>xaRwv z=0&BMfq$M|Qhszc^7P~0nWwXI{&y-@yH~oVg4UvdR**k=`YeaP_R_~cZ&&^I{2YE1 zwEPD&?|N_H@1xiM{fyeWEnRj`uJJcet#!}**_&_0Gd3lZPKo>Vy`y8sug#wyAMn$C z^l)SG<2UndLmz)VT)nlMeSe+Pljl#5-Ff=@F=$@pynm!f<<6aje;Uq#g3k5$w4)y% znEQ1I-mlgGEiHa}K0o|h_IJk@R*COU-HrRb@BP2$Z=+(_85nM=9mrw;P4pLDx8HVI ze6M+$UN>mYFn7MS7O1Jy*}VJRm!n_w=i6I>W(Mva&3=4B-bP0Hzcq8h!Bf4Ud6A7Z zcc1;Z$jW|v=i%?&pfeki)7RffmQ{8A`4P0wZ>1)S3-rH`uJpF?vci8dZ_c}d> z_w8-Hx-R|B04-I~?|CIIC|F;W7FF|ao8j&HZCTEdHK4iZ;?Hhsf zsirlN+S==Ves1<@+SQldE_M{OKvPh#@N={9qc-+q`R|L*efnyccI(oNFO!QG=WbT} z*cw=y{dM1FOEFj0%EH5~?Jh^Qsrt3oK0i1&ZBFmZeJb>`mP^&t)cG zjHh)P`n7|$=WKXyv*U8w?Z?m8^rWll_L$d|go%hgIofYmRWPUI@?+C&_XD<>y2bvF z*lIiD(pOOIc65M_BLQvc25sHC5cl@cSN_(Vbh$gqN=l%`?3Z}1*`7Sv`Qx^DU*DfS zcOo_vCCmJ~+n#js6@S{6b1|FDK#MZ={99}ccKY-4vZBuG_pU#-uk8E3vZsH2pD8Pa zt?|D9n~9-8MIgbnA>Phxu&7-~O7Mq+a!-dyVr$|NPwfvhXP9-=r%G&Rtx#WyLXj?>tG{mB&7)#-6{w z?pJ@uj^s0EcKlrQaN_LA!q4Te6)$JV_UOO1F@AS$_2i{ilZ*WOtTrTnd4I`BNon2h z@6x7y&p}&{tIPMx?%!MD0%}F|y}Z8h*x$3D5KTS)bl&XKtN&XDN3YKR{p8#Kuq!F2 z{LioccIyS_=f_WGyDeX8%fN62G&`DgYmGU0JUK8hQnYfXrFHE`i`V-%GoRAddi=7J zJ3D80YIbVR?9ED`rKs#*GlExJflk;`Qd+etYrDOd)!Mrua^Lsw{Jqp_wRz2k>%N7F zXZzDu%}*7&l5Uf(A1x1B8QrJb{do6tIT6r|x%=_6{cEjrzWrN$TzzSXzuEDmBlXP} zSFP%3FZ;}sR>-}Et^Syi;jxz+>da@i+S`=n#S}X22QBw+{+=)G?-LR5c9v>()<2oc z&}7-V+Uyu;q_>dS>Ud@QJMsH_9)EpnZ(V$2+x>n}=5NmYSN!2i;_Yc_VIg5hZP%Z_ z_q6oCl(BK%&L+bK{Q+57rV`OOP5l&D&(zkl)z4@{M6Q)bQ{{QQx z?Y7+8Ycl$;ySS8O-ZfF$cJ|YatH(~v3=5ecKHp|j`J7UZ?-G~x`fka+mhzkJ`pZd6 zr>5@?ng3B|{feH`|9&{#DZaV_)LxYP@rx6*-37GQq$2Iop^BV4f27ivUvV=#wkUdb z?)e9YLZ!b~%!-<{^t0sYClcwWc6VRP`(HXe%=h&b_hs|<*Y7hi?vuV?32GC!ea#Wh zKYzGSG)PAS?w4nCp)Gu)9qaU|MS+Y z-+$itZ9DepZ+gMqXK!qpJ*RdWo?GH;t>dqqJLy-wo7AJ9yPtoJ{J8tHo6F>;J)l*u zkKaaWFUo$s>^A?(6G!5ba=o^SvC!pfOSk^+?wxh#-=m(a z^|@vv*`}fwH8M_KfkKJNsaPVb`;QaE>Gx)t;oV4=3?-%6O-!EKw@!g*Ptt+=R zhFgL9O3L?b3_;62KZoUXtpD?OYDLbUKXc8}|J@M$eSB{GKab|?(=uO5oCmEYJ^lYj zQq4#Gm%Ox?QPHfI5`=#AI$dK{IeS?{!8WrJ?Nju z@BLgNJ!-R>{G0qOyJxzYX0CXi|907@iWhHpegqvBRoVWnC;NSs@wq?mUp8l(Pd&c) z@umNk`|MY5Fl$fPv)}#7sjn}&i`CD@@BMqddH2?Jp|jV|wKDisk|hXQQopr)@62sc z3=9f)Yr1_Fu&&;wyY$7iWtnU4$Lu@4_;Pmky;He=%X06Ucy)cszT;CZiOUB+>`(3~9&k25fvhAyB@yTsVr-C+4ENa>ldv9^* zZHDdWsGA#o zE$ja5oW7$oUV1Af-8QcH<#@NeGPW)*OEIK&-r1bfM{^fIo%$P6zT;@{p^y{$| zF6ZC=USYfG@XKj0KRkcF%-zN1{yE*pa~|$qr>OL3iDK-w`CPv)+~%#`09rSyHS_+9 zZ-wB)mp;C>-}&Rh+u05EH9_l)ZF+~I(z&43uV_7?`GdQ@ylIYCMfx~?DrPSN{{PV_U~`5iv+EK-}b+HmwD3t z!u#vfO!vI^*|z?Cg7ys*x-gYf3%+u_6(w7$2+xFe^u>}QN zbXLkunq##ky2oOHv)A8i&u^aDVry$XQ{r*Sk5?<1A2sw{HJ6aTv$r&+=*zafJ#PK+ z8*CL;t!=9T9a-|&e*L+wjt0A7}tfxM%G6%FQ z;Hax|)zu%W1>t}Hfkv8?lt8&qzxIER#oq<*K${xAyt`lnT4r7G&U(4)_*W32a&HMdkBDm3+{JXqs za(hYdY<(%Y$9Y!izd7Rs<=^m6)+-Lrxl#9D+wXyE03%FPqqvhP`nd$$( z+?neWzaG>5c=EojeCkuti|Z;USA71p`OzBYTm&mx`f@BaPPqBLVW=v+iSi#^Z3>0f(aUG`~_#hUQlS+gb1NA9x&ooe;5{d`Xk z=y0Cq&+Tu&dvlZ;j>OS3TWZ^>w?tzF(}&^Z%b-{&+t1 zxZC-%v#V_H3xeyR*8O#6pw61Isf}@F;+$`j)gQ%&%SnTBRB1Xd_zab|ySC0g^|*NZ z-YvF&?#>0Bg!x=ee^s$BcvO&S4a@GoMSYyM;9=Om?;^S_n@Ez?-0D{5GH@6?ay-o~KSp-2DRuUm6$!h>z;%a0zZT>a>k zG278V_OhO7zTC+#XPy1{6uh(Y^w+QG0iAIQlDKbgYC3Jr%_$e9 zKwZmUHE-=dwg&!vw5EBt`+Ps$MX8>NYi@?f1&gl(9p>3@Z)cnP`%*LmgU7BpJ6>#S z`|Wll?%~q+^W{LL6LjR&;`UR9E2sa)%Zq}J5U%@qW66(KZ`Y^omSJF6!1tz+)nV~f z(9Z2&_k+WYOMfXaFifaq(qWKV`}&-e6l>*9!_0rHK!*|KOlM|bxH8dp14Bkg+xIN- zx3kSVH}ky{1dWAsbnN)p_%U)F7X!lzenv5d-cxTuhi#T+ZTx%xeNAQBpX{Ee%?u11 z%!LyeFRVBdxy|ldcC=LSwDtY=_U5*rvoJ7RnHB)BC;6B?1C(lFF~&d#$x=+t$~&!eV2uzl++iph-btLBp4O)x5eb z6XMiQ{`vQyJ>JXd*}Xd_eI{N1{PDxb2`6oz*Qm{$eCF>N%lXNdkMPSdF@S;1lU1H*_6L-}%cNFtbXSw$-%{G0bRSKC=Db0>4O{`h?=t++hI^z_3CpSs@O zs!{L`4tsNTdUx5&10QS3+gZgoXFg)*D`$r!F)i^Y?-%cO+j4cT^6gcgAscod{;0v; z_x$zS$k|`lN6rq32zvIe;DHh}ZGK2tE7khCc{cls`qdWY?T;@0yD@E<^!@l1x$T?p z%5udtNI_C_#R|Q%i%hdGX-o?DdvRaOZ?jr&(Dby6@Az2t9H6O}|B8v4%l*67A)SVb z@A#Hp^Z4`s{^n&h=U>S{b3}!N{%qg>yVh-=WzJDruCdkcGuy&n*Gu<44ZXkW_Vq%T ziwu;lO|SjP>wL$z_?pyx-9Tk))3S1j4Fb>{X4BEXeY%|N{hN0auT=H-z1NY?za&@6 zYVQdSJ)09V&T)$5Zg=<}Rw#AZ^5EUX14?%9_`q@ua~`~YyVUcs^-k*^ucx9nLj!`U zu07s&FRqK{Te-8#^KUO&{AO)53;njKsJy)?O9_%c8`@`FunpWBlyq0tZE4)xeS!IB zZDQ0%w=!*NiR0gmwyOy<(~v<+*X;J3esP z;xqGxd8Dk6(p_1%xmOhxgM@#p?Y8C#VRpR}xVrb%6_@xsh4U6U`OPUato2=`S5@2R zO6b=pm-suMZ^7N7aUgy}NKU|IF2Ihi|6WzKzH$Y|Xv)#&%gBzrW?{!ut69 zzke=ps2*#HkXtUv-}iEXzWCc9zlC@2EZtE9=kRdGanG zK_HqVaJ6sEYxA=)a+f*6xaLw=Y`Rh9r?91C3nC7dUU{uT^$C(nG3U=NBnR*vM;d&`qc@vn-aPlk{eR>Q%bwG^aA<92RqZjiwRfjKymI66^(9$vv^SSJZeO-5F~Iw)S7&I6N5dv= zuPuK)w$(*!^nZW$X41>R1#g9wwmw|i?N_a%yE}k4|M#Xtug&+>OuS{Z zYnr`TEG+1H)=PUmi`8t`TGyYw*suLPRO0eVF8jUz&i|MHdr9YPO!wo{Oc=>3a z=dK;;#-+YpVa*#HepXd$?q1+x-ItR6@!R5GfBNS}?f+k~G#M1U4z78!*W7v+pR=2C zDmbFFU_rZ#L&daXfsVUMBcyG=KaMJIXHuVdpeQJ1!~Uw}CKt-T^Vz80$^{=)u({b3C$oT5IkzaX#&T7u}XD`m$o34J;CbA@>;ho%7KYjlE@T%`xlZhc`)G>igfok z_-eO@&-X0L^y#RpE!k3KZx?EPd5*p2p}TBbGgl9otwxAU+1 z@bB6E{dpI~yUXT&tvJ3cuXd6$$M%d0-Y+%HGAuf8kGHOGPJ zwC8iLn7OB}-}XKqd++Yb?7e$)stSDAV}E{of3@Syf0y^xD7M&$frg)jhi0ki64%lHVU6yWO=H zB2TWK(Yjx^r=OnN$IrmP;P6*iUUJFpwylNb z63TElKX3VoxMkvXQOjRu z2ZhE&E&JxH^!1Bs?0GLC-duV8_xum91ue9yFd97q5B-(=Qbv-Qy3g$uY;Ht_6twD$g&$ERxR|5ZC@ zE$e$Kmi_C#+nmz3+V=Stxu)lyHAmj6HE~}(Z+5}0QbEVMEFsY~%*Q{UxBPZ={rRgs zTmMggd9TbOdVjvfsd)i11jH$5g>DB>w!`>{PX(Vxx!#&7)IyK-jK_WwJ~ z_SS6lyW1-H;Pu)kI}CDdr##(M5%lQXy2`JgXI-(M96squfya5D$i=VOw@ui7{pD?! z#m-FsV$Oo=&E;8A!i#3NZz(F5usD3yIqD@SRsKt^e8hCEU>rd2$C4OHa@Lx+fV!2v{pVxWKOWDR|ucm5O&-+&KUX1tOpZ^^S_NjFR zXDxqE^IKz-^?$o&Xk7Z%Gk+#=&A&aZInruQ=zA9AXZOrx^@1mBj<0(&d(C?B z_jYfuoKUKsDRuwjRPSU^1`pVN$9&gbrRLabf9A(Z&3{YpzxcN6{pY11*FA_~R0`2r ze`4Ju<82E)gEA|R-o68BcvR_JIKR6|dv0)G(AwC^9+&@CPWm!ubGT9H^XjKPJEi$G z|Mxhxa$Yyga7Q>vRohjPkAQ(`knvu7l&uF&-uD_o#(|@v%b`~@{})o z`r>n|_19}_&Mwb2WC4`{#R(+iJI*lqF*Xx-26?`Q4G zs^@j%WME)eur1@NM$C0SP!nU?j>Le|T>jE)&bGev-&N+&_0P0;@;2FXW#t+x7&vvr zSDss?rF?G9^3tHXjj@xa#6~P~+g=};YX2>2p6>Qr+fRSXICd)pl<0SDir-YFcKp=o zu#e|WbS{Jkzmr~eQUC0v_0oLT3YLIE%I2=~W2>;L_hGlU_;-Z-ZrK&M?U|1v-i_&c4wEi zWqaxzwk>^^Z|M1+|JC~TZR+LI;okzLdqP^uf999@Dw%HdFJ8XB+`{k8mO=}eX~z;b z-xPW9daak;^zRa`-;AbCkN$l}_2m8Qzt;pm(Kg!XU%b~Yd9j)7i7hs4A^eddq&jX&ajLBo_jT+DE}G zvDZ77n}&Ql=~}X4KcAew#oLWj&-aFZ(5#R7)b*xo*US2J(IfNsq->X)eIZizTtug+ zxSR*L=hCo5SiUI!n)S(m*_%EUz4bc1_0K*foeSZqdJ#8Mw*Ec-X^Z;bH-}HHTK%Bs z^0V_#FWvL3$^|!#5-Vj4`dPwsKfc}T{N<4U>o1pA)t)+|AGljhuKftg4>-?MHU__iNUh%~x-^vvBdv)>|{DEoP1G%P4uSRv#xU^k8*)-iy_{?PH6g z4*r>Ua%0v_gEw3Ly-9s)Rbg{~t3Mm4PFnl%1gq@R_pftz%`$G%oolHxZ>e;YCF4pM& z7wi0|&-q%B6VY(2EOXWB-^()`Ubm&IuK%{=`Kx>9r$q{BgG!`Z`IlJdK6xJeJ#Xjv zJ2#6a)yr0|tFw!nRpO{#-rg8|Wo>wb?6)7=SBKQ~y?S|@KRx?Iv2lsU<^`9sdu~mg zwpjb$*V~qpBlz0Cy!yiXtLUTN>0_m>+tYKe&FO8Qv+LX3o3l$lzAm0R>*1ZU1DUJ8 zuRbq)xx}RXvK+|Q9<|ZOGGnf@l(#o#NnJN}tevazr*GClu|rXh=G*6AIKMi$^#0Gc zraN+#kG8UFZ9lP2mwoe>x0`H#oxihIFOv1^=UIQVzF+vhtGuMT_r;BfPD8~{-!{GU z2wV6p-*Qd)^PG#D=Dz&(Jk(ZK{i zuD!BdF8+M>rlj?0>+BbFSD9R9y*q1F@MR57%t3v#GkIow%tI|zef`;0CjFrc=5K#mcx}pL`|I)M zG9~32Utt4)t4`iNz3jMJ$vR=}(o?d0vH$Ne<=V}7S~8n=PAhcqAms82KVOp#rOxH;iIV!=+Z?N^Z-%fJRY~30 zwa~3J>(M)dSEkT`gOI}~FTZ-_wCI`2>UmzVKc^M!TJrnjT<~Dh0;yxAz5(~A6~5zR z*1NVnbhwOft*V=e^R zuf4Nese0ya=au2m;nIXdOZQH`Vrh8mZeql_+ozYkeu!}OC}S}MFgN|F{qkYQuARTUtO_?R z%4hvw8D4Z{(b;8O>%V{fwkmkJ@w_h|cJy(5O7{)$g^l|-hJW)7+pRY79pB<(R~HtA zUA?rkCg>@G_2o!c!fF40|&M;2VL0|xMTO> zhS^(lMAl`qFWF(;Q`HO|=Jn&^|8$u-`PKVZtBc%^&gM9M>h<$yhuDvm1XN6zzx(hC zai}>Dmh7K%J?N}-%Pwo4?VS8yf)95b*!-`Xm%E@mBk$rK#})sI;=Ie-1N8%p7>A*R>)hM$)iD(hIc4O8O6%%JsghaK&wcR}7mh_mr)12e&O48n{?~{se1Bh%qq0$N5DyG&D=gIaVyK zcpK3VO%$RQlR_W76A1ABcx$5^bkI|4gQDqWkabb}=ObG;^EDsX@XgmgBe~5W_iLT( zSK3NHou&IZs71`I+ zQlE(Kw&uAaBw2a%*Y!2N@Aww`L9>N}DxaMGh3evMJ3#X9&)!_rd_1!DDHlBcwx{QZ zMVW2gP>`2-v$d-FTUvR0U^+C_Jdo*25q))k|Ftt(I&-OSN@dHZ33=k{quJ2X7> zuh)3{e|{go{e_2Er(ZbCwW9atZeHrfRs6f+_LJASf7kBXyCvq^rlQlow@x~&D0=gB z%%$!7*Kha!W&1K9t?^#!>XqJ5%NB6Gv~>M--RHXa^KW0jO`6~Tb^EK|_awb?zxrOo;>kvzyJN4}`zb(T zs$sI-uiD*Z@@Gq5N_?E?sQ0q`;x?1%U$UnjweH)spb>E*~?s?xr z7Mfb-Oo{l(V5 zUNSGo)>#p;(6af8fq=i3GGd~PecyPLBT zK?9QN++{nK@tIJy#$r#T2dUqFZ z{cRL;>H7jR-q=g)RnA7$JH+dK>bdIdT`qUEx_H~JHUHn8O%_S~$k~$pJ@v)yrPVrb zg+pQP;B*Cz=v*~jy`gPuzK(vl=%GnpE=)hYRa^IX>R)T+)eBs<*X=lwx^=xuX2^22 zY2SZ7y7E=8S5g$F-_w50jn|Vdf3{M0(_Wf5J_zINHt*X^R!x^IPHnY_VMb?MWp#8+0QfAfC%d~L@%U)}fL zL%O#ufBCCie8q+(Y2m__GM8%S>tDU@UADVqj-BqKDR&OsQhC4~e0}ATEq5;2J%ml$ zgdE;-b)}x=&G(<~d4Bp>_BQwT6w&I^tJeE9cP}`y^zodK9R16=^17FzH=FIQS+n|= z>giLlGrG4g&%E_2G29STjSXG=WoB7q;j@r>q@KlGhfcyxGgQrAoi-h z>qW(X)4py`crAD~ru@LBe+e?sw7Y8MnmY@h*Tt+Z>Ykn$dqX);HzwlD-;kGBc3o zJJ;Ni1=qt2r3dfywwshcR`mAY$IbcS>fXh-U-$KkM_)@1t-D_nu|MB#&A+veO3pTj z^uD>_(rKvZx7~hP^b$~irQ5#j<@C~(rg19&R@I&K>fEgNvi#F?uJ6!-xPkSQEFUO5 zc{9cJ^Yve^YLB;8aLqq^Yt7pBO**eHOM-^^LXjki{% z%J#q#s4J*DG4nNFhR<}C)4xEzpDbQ}@yPbN&1?LXH*tHJ)SnhSd;e3t>ApRCb3Sdl z`DB94strHyD&N+;dFX1m@pah?e{|b*U-Lf;WQNRockg($WtVrgYNm_(>uqXb;gLI? zzile&_lg5Gn0_DMvVDzx_*^|sScROh@aXN!Cb?U;E`M8Dee=t!(7hs353)1&m$ptn zyDWVDyOkXZ_NRZ%*=7~my?uG)HThNT(0Wy@I`Ng&)G1NBtyb1LEt$7#$?B!G*F?>E zGna0RofUO0-ZOJ&+>Bl4HvJ2zg(lezH@ae9{z^O=cl!6<>Xc~j*V$KDWoNs+Jlbii z^Y(MQX!X{l@Lfx57gfQEdnSFq*!4-(Gndx>s;GWxU;lRfGhQd%x7)XMaeTUbd^^vU zlGh0v_xkAj#pXxWZ(xI_y_kfz`*>XhnLUHE!m%xJuWu>0fG}cWnFhJoKw}=hq82_^KXuy_@!Z zc6iEl?KS&8ML+8SLzq3o8tLaHUUVMLh_V>Vh=c|lBjsE2-$68*rYVUfz>E79=Z%fN2 zwuV;sy}Wo*+qC+xqqz$^1H*%#asN{nualm!=tM&O^xlixQ|COhE!+3*SINe@h>hn{ zA77awC@cN?zWJBXqL>+{kDWN9f9>`DoRY}@8`z>b7#TuA<65id&tK44J6YQ&&NFEH z5{a`l6;tHO4rUrKFff!Jgf%q!FI#AN+`nrbk{@^b_R^C^;at2Qu5yQ$T;Ia(zQd$a z)${%N+spnQ{}f}z22M5)<|G|vGWmM&VHelRUuXNzs_nJd*sk~L;+e0Fj0_A{oc_<+ z>3O`UJI1bW`q^c>-M3zr_wT*>Bd=3W{=64xaN^$m^VgNdOD4_l&%P{nyr}!j`kAw1 ztk~8Z6g%YQ^J3l#`FHYZJ7U}0muDnrE#p>VV)$NB5#xTeja4G+^Q)_SL1X_~NtHt)~uFl#kX==1i(sxl4Xwakd z_69SqFQ3;GC5U2>+o+U)Y8<;Pwgp3T0ZIH{z!FLtV0;6c#bP1MIX6?g0FeoJ}B$)41@V!e6$ zl@k#w?7|Wl8MH*-ykES`P;uF`!S_Hi&UEcoVqTJOs3&E~Ifp5Ar!#g4|h zd%sRs>XxSNPx-s2YQNo&+}(Beiz1GG+a%TdcuAh8;jX*{?%0dVcRm#TA68NQEp2J) z^&BO^XP`_KqIKf_pZT2+vbL}?FsyieZ}w)_?Y!BGj|DoK+Lbk|->&y^>JslN)lBEC zWy^H#ug+Zk9W+?DY5LUNC2yweFz9`A#bx?8ub}(Wc%Qs}JFhp9y9TtfA2P)l7#yA&ed_x9 z>`ZUf%?H)it4lpPLfTtAY|R!5p!^Y5i%zwRfj4WIp~mG$_k%;nUR3pep&6 zX=ey%dBvS=6L*<(hj}!tZ#{otj(K`sh+Evo-G>_(K?T87E$#9b{kfS^ceYJjSjN}B zCE>N8xGO6ILxB08@_S}?4HvBy@|~8mVN(D0=~k+4D}$4!fF?kH9$k8?T*n_YviAF7 z&Re@#tDR@Eo;sl&mY3Ms<$XFd?A?UvzMnpS4BN23U#a=;RSl(pvq{cZ7bVV!I@+$S zX?A7huEVxW?%nS zR<4oG`R#k)?PG#jw=Ev6SwD5Ebx2g$x}x@!&7O8~WU#`1R}W@lPf9pL@qj2r@7@-2Hg+&)Zv5r#*gW!1M9jrjz%tM>p2p zLvwefhgfgz>n|wRD7|&fIkK%x?7(JF zW6C1;>^+{lzaA=;w=*&@1T23dKK<3y`Q|SU&t~6YJ;mzn)cNKb`*&Qqn|MHFn*eBa z2*ZQ4c-?zTc~{N^bt`X8n6+}f*!!Y#i4|<15|V*|VMk=5=ghcSyUv07?)tv5%MVR5 z0u5`z`Zer7@_xpxy*K&cJA+qqOskE*-2Jro9Ut>m7f7d>fj=Ne|8n=5L!0h!+pi7Y zIQMG!R$13OuV*Z|5da$6{2O&_WogZhS;ty5Ob&$q+jmb(M>907uJfDh>C3xnC8M_d zU9oKa&G_~G0=ZW;VrrvI04Qj_r0 z<;$`!ely9ndT_J)GV|X(rt7kUdtcuQiJhEu#lpzr;6J-lnp?DWcL%KgCUbdr@wTjw z-?m6~E;rk&C+*IIHirsHt%-#*ZIYUIwx=V$PzKFdyzT6gX3 z=?jnEx^GP?w^ILbRbaL+s6m$JY4~c2#8N)az%EYSfQkw4=YQV5U`fbLR`s~(-Tlw9 zuD(l-+VptEwKr!2b}s(*XHM4TKNDv-Gcbf)@7MmGdGlP!SFg^}a*fhMpJHGBDtu~J z-pcHv&C_9mPWqj z|MN3nf41*--u%Vtdau^7B{n|Kv3~h_s%YJ=;Mwuh)3#=btkeFj`nt>R?A1+yJ6_g- zT9K(o<7$80F4JA*R&?R=v+JU@vtF;>%_jZo^YYN&CJ(P#UgdqOV>>yyG<1JT>?Li_ zj}sl2{j!)8xnHe7Re7r04^)d6Y_wI$; zIM<)M=)c+{;VSEz1FKyB)b161^S=1j#`&Nn6?3J3ttd{~^3ra-HuWmc1Q;0B8P(>l`gdbm+K*=sO*=u{CB!p!gPgYg%srT^=qqM zEBt+YY2Bx9n<8)hpP|S3>({!2n<8(oy=}t5edSBL+pDwL)!G-%mv-(vkx*Y-a++ap zeRBQJpI7c|>Eie_dH?$DbyW#FZkZZxlijrC%q~&MtuIR}UFSc$_2tx2soP64zgn+u zI;(cqV#m~Je;+fMcJmhgtSCMEfv8S#R>$;yP~E?_{-x9Qnp2UppY`YYogthrsKU`i_J8SE^1-lP7w0b05HM+R)->)y%8h52Rbe%p1T2c6YethxQ@)%V^ zH5c!HhJK5!cc+y)xaLV+@(O+@9hU65rX#_AZ&9j$Fss~JohdQVant*KU#!u8FSF(X zLwxt5BER1)9=a7tYi5~qti4#6z4$q*70~d;{yy z+?n=5#T*O`vqIh#ym;q7J?s0$nDX|Z*PumiyX_)_(oa9W60Wi#Yo_@67Ynt2tM0Cu zldku6S<8!r>HUwjP8KGDVs!hRH$5*WEjU@uzj9(|&S7hlYqH9>W@KfD^6IQC+oLBh zaoO>F+_kg0tGPkR;BUUNh*-pC^M6|}$|~P_wK$qBYM;uP1q? zuj2jep2Ww<@PO}k|I?R~%%5f5-)K|b9+ds&_y7Bwukd8^-EMjgS^!XzFBh!*nB`aH z>-XYi>n3hoBPRD``ON;FkjoO^bIoU7unqK&y>s>H;}Y+#iPKN+_SD`kQ1$Eer$6U7 ztDc^kca1$I;PnrVy~WP)amY~No$rZJjstGayoIXD6j%mr1% zC&bfU_2*ujdm%df??zo;<+vG{KRqvh;8EESurmAC_8*&f6y$#TsLMQ6Nc`D5gD*c? zV{Lw25zr1#xT>;v{pk%3@u0NUzw&ii>3T zUMA-GE4`UN_nwnsVmR=3o9wx3C&bfVO0W3D&t+EKb$PE?sQd zI&1I01^Z&Qc>n*Myu2>5+QEGjm+yCVPyhHwzphqp?VWyh+4}cVi$46X-?U7;;Xdd7ru?D;3jGyz+I&+V)Lb6itJV7j-{*{B-FD1^ca;G7HOml~$F0Hr-df$nH<= z@5ui1w@V_HP8DH%KT{_A$K{Vpt^2e7O;es)_cx>Ls=0Nb;=ihAmtNhy^2TD);-|YW zO`R62A+J9>=`hn3Wy@<{y4IQXDu0>&IqKD3%jngj)3vW0DcofGcNcg~L7wETTUR7D zUz5LJ9DFV7;L@nuX2ZfG1w}U;_$ld)dYc+yensl*4-6;K7IAy(gN>N->!9G z^0WC;vQ8h=k+q0Zh|iz>NV)l{rs1lntsg*30ezjLUfLID*YWMH{^zl^oR5(qV7jcu zy!F$Uuf2Zy^0nR8A`9Fm9$0nsP3qIC@7HyIU0-wd*3@ai4^1yB{@VpwU1+v&Gt=Ka zy!{vVhtA0{n>+RD{EcRz#@CjG-FS9zqb$$;31{vXxqwzp71S)R`m{)|i^pvH)52e~ zLVSN!xh^$#)|GC3{gK=H^{P6}w(S>fiX7EJ_2kWLg~XJW)!PJieJ-tB7AQM=#x1tr z{hHZdo|LaXUwL-Z+?P_{?&$yeFpY6nT>|&vxAg86%-;2C+QPM>;&K@~V#^#mLCeL=_wCB&?T-J69W z!f|sKzrG*6U{cWI&fB2bBeOGiv{aOBa{qap0j+?l;0sH*>eRlO>&pL^^S9nV5V#67 z_WSSr^jFQZ*(K!G=RWp$YZ3JG>=gAKg$3F_tEA5#zxVlN&|c%}&6ls&Z!YO?`cw1e z<636k-r~Cl#C|0nwOjm9a$0c4b@k8Nvrl#HjoR}!W9jOBdveSwDGQ`=hd3?O+jui2t9#boH8J9Q?ZQ8s$rkN8 zyPUgh#g;WO^Y7QqdpLE<_nxfv;mh+wc6N99R6K&T9T`5ztU0hM6*M>f?U{|UxutsT zzvF&OXRauneC5Dq|A(MO1IrZG@@)T|dDU)ju0mz$C3Wtyj9;_5wwH&dl`Lmr{k_{P z{?FA%v0nSWOW*x`GwAI7q9=2r#ZJred1oh7zItt>W^$ll|MRGm!86}ae{Z^H(b?;_ zy?qzkR_9%95tN;!ar21Q`SyJgc^Z|am&CivUT&3?=GmStBf2C}HfHmqi!hxw^D91>}yx4&AGm9qR^sd-mRM2msWUe3|k5)1xb;v%YNooprF{)$2`<4+r}kO$n(h zTxlkMCa9eyd3C7JqUNoiWulM1YCip2MKW*m*MMm&pM3WGKVy^Ib>5sr3rpjT`J2+# z+h&1&o=3Y#E;Ln zB-X1w?s=IV^mWB-ZpqKPrmPG#P-NVv*RiBb^4`LY56$xbY+4y*dZ&o%?J~c&l8H)T z=?3+F34DwU3=d*F60RD*v~+E|&9bxNb#!U(n~Xopiat%cdsVLd;Wp*Ab?@g$#J)8= z531njou6h^I%|gdYVP%?|0F#=y2bXb<&`bldX=xJoVxMKvpRC;zQ|q6Zzb1nt=Rss z60~yFtXFxJ?Y6704ne(TVJ;N$)n{F&@ajLcHs4c)L?5l^;|y%OHD$`Q>}R`PkH?PrM9RK@Eu4MX-vzKJur_PLzdApHc=KS?Z zvd6Z+EzOq;e!FpPSUfa}SNOj=W*uR1_6%o~+2Z4+R~KySRpyzmw(X_EvQORKt8KSk ze5=Q+%oM2`(7Ef|u9o66Yto{&+>KegqD#jluzc0xgDsW53I7-v7#7$)$dlR{_4)_L z;oNI)?ek9FXjMHnIiXjn>D7_0mAkaGj>OweP6lm((3NV_Ug@|(s)bbp+EM%Pby~b^ z^Kk{f1WVMJuBg zcQ^<|$SsQw>d||7)#vdpv(VjY$NU_ezb-k_Dw((W^n+`6iw!3q$dbuilNMfk0JMY5 z!B?TNHEOM6M8j@pgBIbM$}CunR@3xayQ0$#i-?%e31SH*>1qeafq`ajWD zfA-lA3)z;YKGoVbJyOiMZeuK8JI`LZSEpXqrWv#|FfcsuQ`r!(n)TP!bu9wlYu-J4 z{B~*nJGn*N)hfHJMgG+9QxkIhX7qUZ+qvC`6{k*{e){_DpAmm*_oi;1n-M)9VnW{6 z?~7BeaLTaqr`Hs{cF5af>*KldGEjRKGpT$UJS#Xe$j{(SJ&L} zYXPqlFAd%QBx5UjF0IeAwZ3|y&-aRs*^;QoSJe5AcmB*yiC#Ou zfBK)AJt09+d7eB6*|r;a1tof}R879F29C=LCQv|dz5V(=P3T-VH~*FH@DlT@+cqrm zk^i&J_rBik#jdw6g~T1*G+SO?;@H{kj+IB3w!J>o%JSn?#XQs2JBywE@NU;!lkQmz z>TNODu!54tP1a-ng5Ia~Lc$z7xfiXRH8c2p!o9_ht!G-TEIN10dDpwUKdq)jK4@A| zaOvS0CRb@6rK2ru5z`K2$w=nx@Qo^4sG59T4B|X4kn@6!Kk;n;`QrQAs*+D$;x5eo zLNA`Lea*Jb;Lf|}roT%cW*3J>rJXf14SAQ4w(pj@i&WNSH9M!<{OQp~bwSMmhjY*T zIk$2xIO0F3h!nc7-S&LN$Jr<4PHxoeV40T|@%tDT|0m-sYR3B`uJ7O7ApKry(`S#q zhh}eQxkQ-NEkB}xY62+gb8RMM?(m&2#_N;Y>G-xN?zUUo?HZf&)Zkg!r zOT626=a*FftoZzC{pmAT%x}%es&SP+6TSQUj)zyR828+yYC!YBQy>G{hC z8f2ff_iH+<7&sfvYq74VV9B3-w&b>a*gNAp%W9pLypy_l?aPd*mCr8a?MltaKK;A3 zFtPF2_ReRbSI-73tv22t18P;g`Fbq;jg8g9&3jgToReera^L6M(s}0De;ubzwf5kDRC=}Fah%1?ir zA-CBK)NNuoFnPj(rl(w8-n`pi<~%alF!|fE=b%Z$w%e?~DqlZucU$4TIpcD&_oVI9 zeb2|=i_MR{|NMM?eeLyxuU-$gIG3L?-zbz)@?34%v8v1@|E(DkX{*)-n%eG<$-VXJ zuhp#Jj2(ApU;k=Yy6D9MGv2SiO!x9^2aSSX3H{Bxef8N_uRzh_@YaQidz$xoO`|)Y zve3%Rw0`p6TRpwYZn?Jp$o_cwamnQgVaslndv{$tq<$Q<^KH4U+>`f7BX-07{<^x19ly5r z6z@8F;oHYwFB>0z`u^3-=HBnm+obFa7HwO-8XUV@g*kO1^lY#H;N7O;yEA{q!r2#t z&)%)@*q>*Su`0J={q}qNH|`I!w|AWW)h}ql{hj%F&3|f39Jeo<_3J^w+KRH8rMCr= z4>Os3o;b0Km)k&8d{z44y2nSCNV~FRzG^-!`u51Q-P3vxnO0xYu&qlJH-6}8_3@VR zDcR4bug1;Z7;xzZu`{qShFzk*Z25eudaK7mQ1Ht%vsYU zwAbuz%%nYLFlPsUJ+H)mZiBh)^^o09b{PEqcqIZfJ-hAj%~RT&PTxNst;lGXB_+J5 z+AemLruMh6TmSZ*pPqS^Tlh)#r;>x94VpjSDQaz-p84`zNv`#rr9F3&o{CS`QaRwx ztK4+O$}T2$_EC%4s>q_48Fh6TEo}DIhp$}IpJASVS@EvbnF`0h|JFX*^6_c+*H=Bf zzcQcNz4bZ$bMvvNB%h97Te~hV-8%^sMpv~|^gItT9_vooon5yxD6MW|+?-u;`Y{*p z7DVgM_Wj9M?QEA-)t_f%9sPc%KYMDb(!sFX zSFc*KfTr*|S;TaDPDWmzc?(xbpb^noHfn)ib2N ztJKHmgGP;-Z<(wKvseG>(|7gBZuaa$tBYS<Q`&l=9sB!NF1q$yDCB6?{;nO_bvtj_FVDa5w06=J%ZoL>yXKwT_$qUe-nE@; z?$r9MpM7Uh48n=JEd`xFqxp8H-kDw>w|?epz8$G=ieJvX8`BX-k^Y(RsYW! z$3?&NvAY-7#qnwLpJUOJq}*nBJM9F8Q)cAOb=BpK?rTHNXm5JGtNi)(+eeCH=Q%Sl zFs!KcNI0mvFMi*3-N#lkms0c3U0!8-{EktbtJmpMr8j4PF0ojB;O@dJ)}Uq7k1LP9 z<69hbHp$s%Yw`6zMO(lA?tk6(U#Fm4Vv^q8nAL({exV8*M-KpunTNc9)C&x;xLWS=czn&P8|tv>f60XD9(BW6r$-KQbxqD9^KdHGzI`8s2&m~QN zdZ#OueE(Cl6*MDrcfQ`w%^%8rwaP6@Zo7AXIrrwQsr`=jRo#%B&CjW`iQ% zt?!!E`7MlH95-uedVR#|Pg47Y@6DLCa$fy^&*1R4>n|1tZfxHlwa`30uPE|AsOR>) zb7k9W^Pg4KEB(9KmK_6IxjilS+KuouZR7pVwyjTnBAR`rd-Iq1JEOC6&fHq0cMjC` zyP~JE;X%;$x*zS&@+}{2`{;f8)Yl)|SDQR|`7&zr^{>%f-EY9%v#&pX``?-{>*c49 z5B5~sN3Ys#7pYVoxpV2?b+^l7_RgQN>@54{ElJxy-pWq4QlBAr`|jt{SJT$`hEDgi z&-yhhWO~18>D9W@nO~ag?iO5lntU~^v=G$tU+_(#k#)M3j^^bJ&+7|cs((KhvB%c; zuKaJ$>-)Dm%;t-jAEC8r`pd)jx34~0dq3;ab?wj;{mnHzA@^@@HeY>vv3=IbzQtGH ztzL6yVg0{7jxa9hoC3g>qaeeq|CfdCGjD9$1<}EpX=Gu?z|Gk=Y zSTgL5*YzFYbyt6c*N0}g?R)z7x@l=H!b#e?+Sm8a*A0EIzU)=I=x?9g=i1uk8vAcl z)J_SWYAy4t;H+@+SKnhT2;6!EOMvw>9S?7@138f_3zvIlE=TfOCMO6 zADEZtoVDziou#k%pU>fEZ&sWrn7j1QB%|6*3GKIRe$18oRkV}K`=5T~&zDWIT4po$ z^l*J#e@#roe`fqTGf<$_zftF{eJ5VKE1`W8x0lcNsi6Uj`k&`te~_NO;`!s?ub-v1 z{gMj24sNk!vCmekd(dXIbH({t$67K9Zo9p@ujL2Y$Rhh{{fUJ7R@PsumTZZsbS(pw zz4yM@w*>;}E{+N^Jk9*&plyqf( z=o~Av-k_qG8A6MiMWr6Be(*p3iuL{-Av?j_kF&$0`mVjVUuVB+$>~({rzHo46;(%=s;Mm$zum;pKW=prtq~tRos(85%ejTbp0Z4*wqX`Ul75 z+9{SlctBg%3cxFacs_jocB=pwz{N+C7o44vz+`Y?XK+7t$o(ESl ze6Ubt+&Amrc0tg70@c40!7HKXI5VAQ0u7qn)pVTx-Sg6fvX5Qd{A)J(R!o?GsQJ&8 z2*<3;7EX(=J~_WW^_lqV?PuFfD^KSA-BC2(%j7W#yKh z`|m+pYK%P+LY*(q5U{ma*1YcB{52;M>QDdb<@t8q)ppj)MRI4SOblP+FaG9&w*C6+ z6W2JMKE}Wx@%c{bU6U=fdzRL20#6AS@Nw!0OS!VVoOycJ%Ug_^pT2%8dKm#4QvLtu z8>qDo+SV2~Z(H0>*Rtt-oD3GR)6*_i738p={;dj5^%lps-kfgrqRmlv>(BY(uh&1{ zT2lGxRmj1AcE5hN&IL{BT-lx))7#6*V|2VNgD)uC3+1!;hl?|&NynnrRrQDP~R##6} z>8NaEI8b`5EH`Ua?8d!5=l^f<1Ff$4GDoRImAFtu=#Tfkf3Kcro*b@jYq6~v zwBB$1^fzVY8Vmu?TiAZAik-}H_$^nLx9O9el2O}?@BUf; zi!EJGY3fW=ab^3x+A*Rb$%%Q@-SQ3l`{VX6n|^GM&F)*Zj12$$lX5y9npL`%?X}OJ z4PM5>@Je4OV(O3A55l}U_{{F^Te2l4IQ;Ep@$RzBkKYzs%?gfqSb8?e`O5xKXV4@a z+t$pCsy&~r)iW}FSDd|DaiTHYoUho8y@h67HGb@$qC z%UH~N-{b)blwZA45uz{VNUYt~tL(G&@Avi5CclL^%xquepX2SH=Y@tQtqh2z`)?}*Ntg4)8FWs)}$NvqD=1-N(%iio6{>|6S-U1Y|3=Ql`jiHTpx>7T;%HOAZub#TcN^|*zb?pDP z-wCRVEEv2<-jTjVd0~<&1Fwq`Stg>Zg=9bTOqkVXG4CscsReUQaK(W z=A1iSMts@lTP7jT(=KKS%P%|@=!jI-1x2kpG%0B5bCH(?VGGNaJpPn-WtU~qbCW)9+b1<5L2z_i|31*CIvkexv}+kMxUA7 zi7R`2+f9q_GCrMoNA6kb=9S@IYuw6m7WMfqzOt-vN0Jk>h|~k^eEr#6UZ+Y-mIqY# zJGwUm%pF(?t0R@bK0?w zpQhS^);+e}Hr@5tTlVCy{lWb8H3>70m3y1qIX@vi{e}7DuRHv>I6s6Q`yGDz{P7z} z`)yzD%&I$Y-gex(gYR1Wx$Kpze=pZiJr`qG^U{TPcIN7Due)7$e>uG?!lKUF$yX0Pu(8NYkLpv?zq$7Nvz)DK7HsX` zKK;%7`w1(2ue;Y@nYC9k-L@{V-{r2|p0#b;x~HFgR#Wf#&8YUrZ8Ol^T#)gc>Nws* zOr^g+n1KpS(;kkJI)k|tvUPucm+k%Zxy>qAVo!R}8qld0-c_oac19;cUP zvRkh0EOVwE_*L~WFPL-9#@N|m){UlnocBC@GF8PlZqw}xUq4QCtOAX=q&ale>|MRz z*v#ZWIOy=BsedPd2G8gHEnExAl-}Dqs#duPI?giLH#tx4(y1#l7NK4-GeDbp`Fr24 zI4}0@Lh|JBml=MES9x{CWFOVv+P~Yp|Kk4q7pvt?Zd~?@`@>hzZ1t;Mjk+cO|4)0l z|MRxcsQH=fk~`s|GFvR@xrKx;x? zdhg1L`28d6`&9#_0MKH++ihDf{?Tzm%k%6%k5s~e?1MotLImLfBnhs zEbrILs{(ffJvy|-Soe4V&!x^ICw|VIEs?kVYrwQ?Z&&Y{7tyeOyWQU033{*Rrl{E* zu2MOk^|V;H%PA&+E$*i#y?+rg`42BZCp}?sryrSb1nx6-~Z)XpW|KpvjSAwW`(`| zrLn(l&F%a>%ewlvPmh~*c8FYDuz}f1YE#8yD)j`Xww)18`-t=#6(cc4Nzn(svXgX<+ z)k@Eh4bN<>b{(tN2RXICRwzQ$Alf@M>3)iBX<>Nx;*H1jU-N0~UT~zqdUG^`{}$8f ze|}Yc+$kJ!FV4(&XZ{SfEqNKM>b3V2xR&3wyYqQ6$5hWg?#oT;$5vD}Uyzco_L42)}>dI>a}5&3(U`Wz*NaN!+1Opj~V6K+or#4 zpZc3;yY!7+3tvjvr3poVHmKiz_@+4S^Od8q|6@Kr^2?9A9lbYbRlNVoWv%Q#GoL9d zXRBNcn#p-rI9ugrbns^bRXrc=`O@p(olVY4*>iy*-qvhkac@uRm6ms%Rj+s1nNC`; zrsu3$ZO!Qhsn}T1G|GXk9toie+fU^E5ZMzPd(GO@I&ObRd4JY&25#=8@bFOW*;
    b7aQ`zU|MKTrp*bL3#T^ z(7LLBYaiW_ZA*)wlDNWPf_40$RRQ`8>h2_#mS+ zICSFP?)tpWG5_41B}MIrOMah7sNY+eoB#Ij^{1c$PpV~S{qFO3eA}nYOa7DMY+Sm* ztvoO3huXD=0aH52I#Z&eyrv68=2n$LIYoCYe8b_3yv#ff2&wOUiU^;ai1|CP_v%dcOaUUGHI z)!$!VHp$M~`fowk+f*^vS9>mPDyrRIv;N`plDg+CH*?g5e9lQ_C;fhKX|DU$_YrYR zn*U zvSFE(NAGW#cXFc?XmPROw0AbEen$6&{QA21W^3p-LD5I+)AiQg+qPHMy=Y5K_^wNv zxSu{w4bF*Zs8TsTEAHaeWrZ!EGIy_ediGWE=#1YFbJpIkk9oP%_0zXannpL`WrdWk zt_p1N4+atpM_<6HWZl^d4$Janw{>fj6Of3}h9i}8N1VyEvepdp9WiL<_6Kd5`v zRC8BUZI0E1mAdSkOCD4-*6hvg>gNeteq=?~)vVWZFFBa=W|m%)vAqg9P~>sr8L!*? zS;=ee-8*&nxJmitg<9*aXJp=8xs`!|!6DY2>9x$ie`mdV-_BZ~7I@V@@XYnw-r`>~ zmUUN|1m{hRy?lMitKUznzn;Doa{24FGe5FE>K*1>v*Uw9X};WQ(cPEk?z(sVwzsmC z)Oy?Ct1p{{cd1Loc^X!p%=4}JyKUQApcCXrRVOkMxgq7wVpc=dxhpi|oFpXFVZ-k)=&PuWs5ZnA{%B6szYOJ|)|P2XXc z>0h<(-@mh3wfk%GTRpSw<@IB&7qrgXy=V5y&{@n;<|cDu%33!##M>5UnqPiv|EG5M zy&tKI&B8wYdUbhGqujm)i;tBXZ-4Y==jq*`X4I7Ml=UB8Klfs?D{@pn%(=$(_T^Q! z@t`){oW8x*&nHX_U&9?gd$Ce?xOXetk5{0*A#ZJ+r~I40`s-un!zHfspIwdWe7L6d zcHfH!ADIrn?OC$|G&Ypjc#LcRbZePkWiRIy#~ELEu(G+*we0S{k4ek(-<_7_`}_58 z>nY7OKh(a*v~BA*zq3ru6tu`i&Cge-+@j>Uy0^)uh|@4 z%`Kel@UGIKW6fQlf?Fkx$+g`K5qr7(0l3U4s(R<@%|CzbQ>)i@{ z`F+WfEis^J%G!A|mMyjnUBAdWxTItMEc1eT+s)B!+rnaYd}N71UENahDCGudt?SqK zx&~YCnp+)--yT|Qstd}=-<29eTR|gRx9ZP_uj~$MXZcl`U9;V#w)A?!(!J$V?eE4_7tYr4~^!#gcdPDOWSD$HG>t1qFx_E9}?9SgA>*RjiFA7fH+PD7ZqmSvEZu+Tg z=-D)V>gz?$@16L0rm96lpCM6%aQj%UtG@t0&t@{ z6%u*#ewOUn@Adn9UVoQ2zjMyx(YuhJN0;t;clT#oI2Y*rL`gQ`b(5yNc_ystUXqcd z)z-c*VqK-*l}@Y6XiH&is+WSgi4CVF9w@rxzxrF|jnDgM+^S1=`~J-E*Qaxzx4gaT z4H~|kwoWEupLXo-{%2BI$(t>=Z(3E^9I!PjCC9a6@0ytV`u5+yIeLEjZn*8Jk(thc z3t!dWdY-?!Zi|fb|5Wj5Go)5Sm(cWHE!2iCp?L@z!)ROg{qx654$Y-)a{_~+*8TsN zw$9|S+$=@~V1qo01V^K84FV>=~P%d+Z{{jxO| zH^w|xU*-2^c21QKD7n3J6)b1|cVpTzz5ag-&gV%l37p#_u4%4pspm8Qj#a?--n{kI z_VHP-*tRRh>)%}Ke!Sf1N}A7fmf8=uw-v`Fr+vM;UYgHp>nD}+7GsnRd+f<*~3{SGM1; zFW+W6d474_{xj}nCUuwXZXPkaY^-~y?8t?$bA=bLwq17hQgP4vPnzr9lAcAZ`>5N( zXj<^YIrWxVpFxe+YEWE<6ectq?~B@VyP(L(&gevet}Q6s=Pj(ee>41Wcz5~Augv#f z{+xeJGVWopY`yLJrJy;`*vYHPH}6+84W7*xQuiv{)rqO*eC3>)4g32aK7Q8yCiPcg zYq56NwD(@-SGKEwcE)zklUlw{_c71*wcLxG{#;d5JQXl|(xsxaG2wrw2DoisS(cNf zb8gmz;KR|*#lAhy-ydUHJF{|Y$??F{XVU&x!0TFdZ$7L^{5N@*dH>39H$ZO8lH**H zbwYR3>y0P1ufBPA^4IYxrpv;zXH1k4UuHi~X8FgvLaVQyf1-LU+_C3v&`+_04`rpo zcRIcHF}}9UYA(Z^U8n9`Tl4O0@|G7XH%5Is!@8@sLi(__Th``ny~-(DYHlrKp6NG# zUb$Z8&DOSc`4WOF6vRb~%vaxe^UwM6W6Au-=O%wWvnDMn<$=kGRXTUl_N?z?6W#@K zm<=R&%y;=WtOI;VH% zL@MpI+0^~yZ8HB&Q*I0Iox3W%XwAKy3)ctT-{&M9zt7|S->vi4$xc`_jjj9Kb+xsR zm3g*DrawBeuS;Z_gnyG|^`)ii#mROnk8SNUw=2K)cJs5Zs-Dupz5nepQkBv`ZhH4T z^0aK$&ZO#@cF{Y6=j+~CdF`X%uEYTD*qiz{Q?={%?9Bn466tkb_tKr-WBrTo7pl0g z{w5Q=UFG@qD<=5@tIT?pw>(X_78!4SKjH7{JxaUl;x^w8m<`%?aD}~HIxBc$nXl5- zb)HM|ByUAs>Qs3mfBVvx-_s7y+WRkIt5E8^BR)m%el_Zr{5>G1*Rd?CSBVLR(G<15}#jbvnZB=QnR{hn|(KNo2cI(yOUpWu` zoO9=Znt0s1Os{5#f4_8Wy8fkm^|9-&uY0$2-pP&A`a>s6we0-fVzt~hVsBS{>rC&Dzi~9gTDkR#>dE7`y%$^kjo+kWrsH5csaMw5KJ}>G z)G5=Xvx-;kQQCd3zH-{U|Cw`7osqel=Cs=FA!w%I*PCsQTwhkpc22t`^xU&F@pEi! z1>d<3rV}|fO^>t=m*rcz<<5=wg7xw5t3oqCr`W8}_DHB~@MSkD{c62`_30(@TX#sg zpZT77(Lq*7iFf<&vYT>;Jr@LT=jnTQ#U+mIJ;(mIoIfl_jHgbu{&M5V)K`CxT#>T; z`Ef}$+meivm&I2&&Uk+P(n|lYGXgeydG)Se^6A^Ae_u07vezG0JiK}vC?a;qbL#MK zs{3EaTT!*^-rUVcOXR12&&&g_(5ky#b0c8(#ks=&e4=^{chr8!===EbTNmJ77jDj9I9_x;{uA;p?n{j!OMbG|ye`@wTNq;D|FQGYFLUrYa zC090m1l1i^WI!tj?>xNlR$kXE_CZa-ZMS8&Bx40dWgo4#)0H}L9Mpz4GrRKb_R?eF zHI~V@Uj2Rb{mS`QHZR#hX9V)4i$>TTTe-`m`&xbetM``-SFOHq?rfFsYX9zgpSpVY z?^|ONp`dl-e!*;~Nuc7)VQtEv$FHs4%wp7Rv%h%1&cgk(S!8g>-;nb9T`tMHR3!8c z-PP4}i!+=3uqrAz?9Ju<|1X`t@T$WwR_Mv=$E9J8-&f7>J!hGHci-b(zb~uq`o4K7 zs3GoFnzblV_R&>c&10V?v*^E_x&)LtuY~^AeS2LCv^FjiWo_Kk2X^ho+#})ANj-_c&vIBW@KWmp;Y{{seC6?=d z`SJaAK?~+@uQKVs+Hj5c>iX0Jr8KeG`_ZNmR>vTyo!^e|_=f@LdX0 zS4`QBKVQ9$!UI|q*7qNO<6>e z8Clm24#gCHT+cJl?S`UaQ22L$!z<5bFWr4N%wgw-B|hBSA9UsH|H~`H z(_da@wVslnq6$3-vEb5<6lsTMx%d~St&L6+d zz_!~nW(tE`aHpT;nr7cqG0D8kn*w({6#g-%RO50C@A8EDV$-x`>u#-QYVMR-e9~yK zr%^a)O%Q0h{DpL#z9CuKEA!gyxpl^1;_YQ}Di`_3v+A+BLgKd+ohqpKqIroO7H0 z)|N!RR}pt@*_HA&?(yeJm*dBl`SIHXM=V(XYm0&1dz-K2pi$L^;>B#&G(ioJtM9t( z&Tc)Fa=SQFN;YX#Y@R7sV*TEV?RsyY&U$k6x>|TVZ{BT>N!n{sI(Owp z(DI?s{Qv7J>+SCcSZ}u14%gl^J@e?glCQav=_~HmF24PGbE|b|mcdWfmH%=Srd)ex zyRK(Xl5^`F=9;~x>#{Fr$v-Q|T(9EX?&qPN^>^*f(_G;Gg_%-gX_u;X->N$g4fd#h z`1UaO%Q1cFsk0{LXWBg8WfdRrH-z2z>~X{7+*L(fZ@IX))N#+eDSa*M1ANJ+z z^>s8adtbgbbKTajx1SvbrLX|U|1ScP)i+8$jqS}{WxwW5x<%tvJH;T-*vIws9246- z*Lgd)%;u9hf4%-$-qtPgJKT33UU>60zl2@Rql=t#zn;BhyDYr>R?el`=iANiZ?MKz?$LEz~=^$hTj2uE#su`pWXXrM2_z|Ns3O+k92K^)lbmXn)_q` zHFVB_c2*ybUu$sJPSY&JSYC4F+4V7N+K-opTwn4+i<{S-?f2_dbth+iJ)r?QlX2Fu z8QL6iK~d}0i-p&J4atn$xi3ENZrJRpyZbZ4qx`o1`f*?0nm1Pd!Rxj0a*`|60uQ#` z`dL-|@~`x7>2=N9a+ZH~{d2jvSABy@=BZj|-n(z+XT3Y-{Hye^V{k5W&EBv7djD?y z^^YabuJx}|gM<>iNy9v}Mh*;(1-$4$v)+rkbRgU(?-y7KkcL!x(iw}0Jqv*i7Y zvR&mR*1Gqnt^+lzELI2bwLAANZo0b9a|x&~7FKiq?~brYHK80(XxXrHuJMZb`R#qw z&pQ=ITcuaGh6u*z>u>d65f}JzmB_RyFF)poM_#)R9t~RU(5uw6>T3UC#oEnVey!dK zDx~(O~p%{~fB-B~xW zZCkhb6b0+di{DJv-mky&^7Z#+&tE?H$Yk1Q^nGt{KTlB2lbgAFSFM-{+8-kKKW%E< zoEwL)>`?#tyDB?icAM0dV>M0RLu@A}oBn)vaMp)cGJYMakN&f)ZPt4~dC9rXXW7fX z`t*hR3zu#Lx7()8U&aX^t1Mf-FM93iDs{AUatBv|Q^I!};@Pc3hOdeW~Q*>*7$*?JWW4GEa5wt$IA& zciQ*gUz0w!UjP4QvDDGq=Rw;sm*$@d-gvjTP7X9qxIfn}XUE;|r@u$Z_Xx}Iz1(E} zJoBpDV|D9YUYU_Q^{R{G=6b|kEr0!8{yOjf$OrEXROVK!jsN`q=dBup({~qwQo#lW z&NW&-(R<^S)z+H!*5`Wcd>zB9-;PiHz2)zQ&+6h)n%hsT0}Yehs+G)>{2#J3_35s6ds&xF zYWUy-I(UHn-}Wf#chJ=XYxYeOjMupZ>Q%huzM z(^}tEr;pFtm9>AD&o9UQc@{4|Z3HEpD>gzAYBDFauEfsQ3GDv8|LSJ@HCw-Y+1~|9 z@3WUyU-{j+a@U8gmbYe3dwl8Rxs){Nhi6LJSM7B=DLM1!(Ouu}{(SZAM*pwWw~W(O zHh~VRx$=GW)S~y>r>)o0hAf7?INNxw{-OLMkKSg!`gg;B*T222w@MEDIubN-uaEq{ zeX+Xleuquo7x(hh)aG|b_zqouYdvlG#`R~e{RpowJ^7GPyKHIp9qs*De^&3;GF|*E zJOwluutIWP;k8QLsk0`o2QBYX-ygkJ@vYR$Lvm+Lmc%M=?dxArcHi}zk?yT&%jCn} zUH*Rh`wNe0U$-uq^Y!YZyH&3qt!ulrqv&^nD`*orsF`0BGb2ytPSEu4nd_F^2)O)L z^!90!^v8<6al4}L>)m~Psl_`pa_76hIV<-??eXUCf4$`6-Pxy3Cx|Usb7$e7r0T7Y zG|DZ$ylj#Mt)}J8mS3;^TlIBQUS}8INAs)kkvpBW%jGYJcbC5e&6<~JOWK^j68amo zj+i%7e0?_ik_@NsF0Jf8XTH*2y}-qO&5hNd^Bv!V?%!ZwxWaAb`{%&l<2$b!@+vc3 z-5=__HA`gOwBAFY({w=l<5UiWD>Clm`tms}bEfmrrKzX1H)-qc4shSZwN+c!J(@2y z`|LfQwRh&On-uh2RMURyS+&$X^;?yi=X$4zh)iE~aBaNC{j*ySO-gb$-4Ux?nkBUq zWcVJ(6`(U%9=%`fU@w33^r_Gk{mUEgD9N7Gx^QkwOs?I8l}~qH+FJ5F@borLsjDVx zF3q>ig8qjUzM3Pk_C-LwE8A~voeSZrOP`+7-t;;kt?}Ek=b6s03fJDL_1T|q_hyo4 zzTLgJS92tmf{NOuky|E7wP+ctxlBA*$Mxy+#QyEmK?{JwQ?75kll0bN(%QA{o3>_s zH~hQpr-7$-$SGW_Y!m(q&tLmQd^+gd?JGSsZ@o@m{Pp+v*W=qv*50W-v$h?)LTg2( z%7%cY3*SCAeSYzxU;O{Gmuz?aiT@lUAqdJ43@iLsG`4Dib`LImy+3Z#Y1fHh;f7xw zEMn(0O%8;Mf6aLI<*Q|D+1ZHd1Eq|h0Ro1Gs&*E!bD2r^Q&@jm$G`r6eCqFzn0Ege zpn`~j!L*-6Obc|J0Q<2m=2xDrKAIyB8pdH@xTe(D>h(7_hka{~$h$9Jj~8`=lAX94 zMD~@kP{fK0SN{foIg@&qXY0?rn{iW%wtz>A88*!Le6%;+h6P&#owr2cf-vh1t# zlEvIX1r-B>1Jmkzpet{Zcd0~NyFc65Jo1`2*yjgUu4rt{x;q`kU|HfsR3AU~rIiW8z*0IwQ*3KJpP< z(4C2U8K~Up5Kq(Ez2FF>8e?d%>SGb(xjl2*V#V`kFRa@lQ{E2B?+gsD80E{^8*V+F zy|lXIGkg7pPf$Nf2t}-zbXXBoulU#Qj{>a>DF??g!-9DmGarF2Tx*Ei-ud^r0%TIv4yjX-RO(3jRN}drLFdFWD@&KQ$v;xAGU0 z>e04cidqZ|399m-`|sWf$vs&P%D5I<9(8tcR@0)_gzoMKO%v~SUcGJCpF0mK|J3gN z`gHDd(8^)0z0Y3#I~ld(tH)W^)~eK+?aR3MKdt_dJy&S)mM8L$O`biy8MXC!1g|?A z1H+mm&?S!V_?Q^7f|7hX;&v?Bt@rwF%)Pku_t{ZfpU;q+yC-P#b@>wKlB>bf=S$lJ zH>}^j%+4a_u=SkX_dsW5OWpgn)XVF1wuaFab$fdgr{rBKb3V_yqqN&?pFyy9natXS zD;O9WrrvPkSP%!=7ql97g5L)Z_z8Y;*EhB;UOf-wkC`=l_kQ_X>%1Ct!e7dU`l+03 z2YOZr)c2MwN~q3gSfA!AwN&opMpFS%28In%+8bilR5k~c`gR3wUy@Pk*AoUm%4+!q zhIr9ir>9JfU$mx4DD{b0=Ho`6wf813yjtC#dAU(%>a>rZrU_GTY+%T(`k8dJjn(4r zvq#sTXPxTWyN>&mQt8i~2a9V$>CSFLs{Es@HewYm^C3@c%I0 zt6Fw3CwZN&?s1&4$oa3R(1Xv>GcZh3Y<$WD+T)nIKPC2}dL(FD z)Az}t0gE(Ge}A?5=x)%q2`%mC?yMol?bp9r$$qTF;7VG4)x1gX{~mjsZ}$3AadUcA zMT|S>Aj9D6b^B}9ud8}qE_(a)xyrjO?>c`y{Fm64{PM#GkzAj%CU?$7VyLZH2bO3ojTY0lr3NV{62q5XuzXOGZ+{eN<9)H zkEBi3dp8qwlG2(!-^Dub|9gZjjGMjDG5`F%HHRh@-)CT0absV7?7C%!$MTO=*&BwQ zE?c%+LFx6Cr_b5W8*i!IlV)qQ>eAX(%V+IL*}m@I_nPHlk1C>=R%iNj$jMxG4FB$L z_d3OOb;=Xb*OytXznnV%x>RNL1=VDW#q0L;?<{lZvfEiYAy|83+FJVs7xm8yS=KNx zWU*%@L?)CxSBv`jhNZUpyukE5FDEZ)6Kt&dd1~IRug6kBtF(SreO}Dm!}0CA;nW8c zmu%}**6lkM1xf{mtaL`qQX@7E;>{4^Requ(iQqz}jUu(B~kr!W)y7+^Xr0@#vra!el+j-Zy-JTTy z%7Evs&A)^m?pU?`LazOswcYn;Xjkic$AMC*+5gW;f4}aTX8J2JaKrxoe|3rJxfMT^ zzUE4XD<@yO`rQz;_&r|#=G!Y<&&OViohzLEY$r2A!>fnqjxLGQ-1zI$xr15v6t3t# zF8A%aw(9w@*X#VJy_n2ueMg8nK$gGn?Sk-iZ!%Y$^}c-V^~CjIGo;=_k4?<;xV))1 z_w~xt=Xt;0R^2d)stSnZh!yIr_J_Pv{l1AH$JbctFw#y_2}H^D}Oi2YhGkvXlPGnoyG~e z_U(}R@m+6y?|UjT?)&xQT4UAUS@-gKnOE?hIwkunIeOMZ*nx^JDRV)EiDi-#^Otw= zzpP5%KEA*1(ydxay}lDxfr|fT{l1a0U46YDbf1B=UyJo>yFL9UHMhLJRe!#G)xOZ% z#{@ym)@jEX7#P;LGM!$~SvwhYVyf*bHqc?kFW0{Qy~CR4z~jH!&(sd*s_Ea2)eh6V z3QEKut{jaO5ta&gS_(P}8O^+?#$7MBw?E3k(d5%_0^kvYP;rlxe?x;U@sQvo*RPC>thknb~->=v4 z|6aTAN~>Vxay@(V9r4|5iMuK@vX`&h`}ncy)>Rq5>+|2Nualdx$Li(5jj|=J!ne)l z2Fl+*Zu93V*He*OtM{Bcf82Y0+}+ckJ~D!HuI0+$q$zg0QXAa&y|jM$?O|@oXMyK= z1`WSnt$(k7#d@=Oc;($$dnKj*yy4j{mz^IHTbEa`UR?cKLDtc8{;R)bek^-@JM!++ zMRI3Br#6?j2QKB$lM8s;^!)4B+A|yPDEv)fg-1j zhV}dQrmtYC*?U*kYwEo{>&%zGWO$ySuYG;)e4Rkh@@>#UscX)Wr?fY%Ua}>o-H01> zq0p{ZbMIe${N6tEJLtr&Y!8rg=ErGn+_l1ev)1}zizWN(H=p{-7^!mOzI%R5cI?}w zTi!V3dYrwo=xru=**$;S%ZR**s}~OP|i#l{J4~#1`-F?ebSI&glv_G3(|H{2#_!`uIVZ z)RkomUw%CIe$E0=!@B&j;^ExazkkozqqO_p+|922zAs{)ZjGJ1$aIf$^50z#7pNvf z0({k>3*SCoU1b}Xqknm}vH8ohGiR58?&*2`EXQWa_VoO)3H$rkNndaREk-ST*tqOi z&P4+s{`d=l{x!RA<=kLkSP_}iaje|Cy2D*^B-G* zb`%|8-q`v1dU-_Kf~m;cZ4I2*Fuz3#%{__Y?#XYUIZ6`B6(u4VLw#+}&im z?0DUSKYUp-qA9y<85qiYbDoEsU9z@)lS%#QiBcUWq~;1QzPhcjW#zX2|4O?-_lK^0 za&;zXLFBo~br;^x=ASK9U2wa?w3oB+SJl1af97v_;{+Pn55CTqEx$g`({NfZF9X9G zN2b>@>trV+?czJ!wATH~^UjsG$}Db&{C?9U6#MI$&0ed!I}a^R=lb;h;^yh4=2yiS z8YVErgNk6k*xv{9Z^z2?ZvD00sQlG~{Mr1k&-sg;erRA{=2*D$*#2Lux5=F{x^pdU z^13&(-+cMHr{D5!`+n>HR(s$7`8KVOmw{nbKTDV@=x(0ELh;~S^JQsSXHIX{U3vGz z1M$;eKh_kRvt8%&2>i^p@M<3;L%{!-E6NvFM!E5|fB8Bo)>L3(>8~vr39Ihzov*t# z?9;0ybDVaA7mMYxZ!25ZC-y%1oLTx~N7-{ld8#*C?+S}bJ;=U!gMneeuN94{ne_P36dCbVH#RV^{{F3Xa1q zqc&Q{ral$Bb8|;TP|gaslAJYlx{pDd@qLq>K)YD#Dh*?zd&GHU~dQZ?jbvIed-uj-ux^D5#sC~w< z-P@LDUS|9*&f?$4eYrAMYE|*(jIEvh0gqQGfbMO&aNfPnE>25RH$2gE<)z}T5{uOV z)|ZR67=GO`?VZQays`$0F=kg)-;@=t27CdGOF`ZiCo?br-Z+o|HU zd2-|2N3Z^A{`&LHvF%pP{+jiAmC5T~8v0*d6}V&Fo9Sz`f0=}zc6+$&_enjCi&I3a zzdp>ry)~nHmg+{(Ey(+AY%aZg-TgL|Ysb6Eo8`9OTynbF{JO02Evb7}!8!Vu&Aq?B z_&NWY9%px=g$_M<-+=U7Nh1Y&>hS?_qNR2Vyx>9 zTB2QDyzSM2k2T%OYhs*AHh>l-#@@Ae)hvAGpLbe!Q}(S@e}5%i)cd*J zq_Y2f_gH*;|CNbry8LZzR_@!^zw#98-C3`ev$t87zI{KNKl{UGW1oJ|9%BA{$pzlk zs&hZ@`hVu`s%pFFRY}z|Uv6YzSiv9B7~1G2=qPnt^9Dz=`wF~)GN@&%Z%z-pz8y< zw_nQ%Osx%2+j^`6SUJl7&C zWO0Xruhe}{bNw#qVZ+d)3j;bIEvm*=1Aa zpeL_m|H^(_$hdFUrua>uRPeTa^Vc{1*o=ZE+9OK5Lzh|5}d$Yo$RW+6C%j#dI1}l7(O?x>n{!6ZGJI?vx>$RSC zcdM@pFX}o+YwOtri0`+XzJEOf!yIPQ4O#{Zs~6Sy+}X3owt6#{cg**fH@$<;$_CbX ziq8LY)tvL-rwX{nn%`{Qr8 za?g`UwyG>eIj2=vctv%N*~@oe4nfp9uTvtayFl3>Dseuu?Yqb%PuYXIG1N_#k>o) zf#&>ctFo0D7`{qsZ_qMWE1rXZrX~y?=##ao*+YOR{<`t8%-$>#nM zIlRC3^@{J$a!l{=F*N*Y5{*dzu<54Bj$Gx#Z>PPph*CC<+84R&cERiy0`;YtVShy} zw%$z^wt9Wqn*I8Zl}>Mkm9{?U+-O>+lv1){zun%_1)wcJzAxsj_iNgbeFeHl@#(%qzx=}0J{$J;r};~TCZAkAndz^e%2~Oc3xa$5Uayfmn>^>A z?ard|w>oxv^Y(uXO}4uiSCyH>@BLU~)AY>O3v~|vpPOy1{62Zrww&vM%h%hk&s9FG z?Nz-!W5EW8$L~!iB{@%x>D^V$z;LBhWy84(rkYU`5B_VreKscCc)ru@zgwy+ejgKa z587>Gu&jCB-ZiryKH3=O*}-@1%l=-2uWi>>pdKg7BCKAy@SO)_tI?H+qHiI|yHqkh z-F5akpP8>ed)XaxALc0Q?Uzo7f`(`EYlTJPS-7OUwG}KVAb=seR}fCtBaraMXX=vV4wf@@1b+1 zMq)Pp6%*!z)^qtLuUXIiWDVzCVPAFOdAoM3b}K2VPx^m0yL$EX_P=#|rhSiaZNh{Po*e%OaUHbIagsM9)U$>VVeA|5}uy=3Y z)l6>4ZV#TdQmxW?j|)6j`^-~GnR3xQR()n=T&ZKkg7x?IZ`^-7EN<@0SN}AZZ7Zu- z1wMf`!{*g=(9R8=AQJN`=394yQIFI&m^?qwrGx-<=lYV z6RPe^vPyY3Av)#y6V+qeH_ZhtzIj{mH|VbIs<})yZvwdQ9k)1s;2ku`p2PuHsX z*|0Dy*!Q8Q{EXa^rJd#;?8cv`24|Eznuy*mQ8-;N`^gT2%1SS>A;XM(PVe?3_hG>Z#5KqU6lv6#F6_ovR8z3WRp&b^|bbK%g7 zGmmR~ihK6d?N&P~@k=4+=(`eGvmr%iWTsD z`c1~vF0Nty_F2bRuCF$C12t_@GqQto)7RQBNME+*>Y}%qqIG-2z1GC-Sk%7qY6x?b zIq33)+!YVknn&}ef^Kf;dn$JF_-WAXwV-1Y-p+CfdA%&5=DSPnkKf<8_M7EjPMkU| zyr%hvvE{W7-}7IdTRdz3(oea1?weOnk1<)KXTQC;lk4Mky@bMwkTqc~UVpY8hpWn-W3;yL@uUN6+S&Kksg?Y;fF@6YotuRVO` z?_3K_J)3~@@%LguM~`0)dw+d7cUcB#InlQ1ks>P%_w*N@Yx{fdKQABmm(bH~4{w!O z++O+m^eI`;1zd-pa?kslxOU-dMurvn9tm>~olXnBobmW;OxB|-^Mc>5fAr(cDU*DG zu=PR_i>=HIx9)u_AAIe_$@gLNKhH|FzHIttXZ)9ky3C-(#cjuTEXvV{YKL zO+|ZuzZUzOeJu^t_xdmkbV{q$nqJTr;KsUR+Yf!o7Y%>;@foO#3EIDO8+63MLzVNO zM(2reZJy&VxJrNSoO^n*c&TBiLX=fu$=@aG!$W56$-Su&(;t5$GW@Hz;hwkOCvsc8 zJbZuK>A13Yp#h+MQ+_x6;xGw9jx{XSBLQUFq3h39oOpCK2-F-~ zMQxtU9j|?AUA^}|BOl)j3ebmz>xz?1Q)V9%Z2L85@52Rs&n17)t+rVoF<esD=eJEoppq`D@cwp?XJ>8w*8pC6tm;_w?$?@ivEtY7g&o+pV)v_euU_ri zQReEnMAOxw>iu441r{d`&X=XnDg`^IOxZbk<`cD_b#a@)rx?6Sm0c8>9~dUbnU;J zzW4ky+0whv?3>QtqAhF(x8+s^24t-K&?c5rt!*`13S)o&uaoolx~^@XvwgQM1A~TB zL#br-{+p+DSKM)0`|VxH)AzBv^UB-P)51@c8WnSId0(>X;Z5O*3+wziH%xnPyV#W7 zThA_j-X5mzX>UC*yse!jl@)G(;@@1kKwF*+;l$7Ed%d}I!)*U<{ad>C-i-aH0~(&b ze7EX#)b;C!WIryId;By{XU>Y~;}rsWqO}RS*)Q`v_0pc-EY)={EH2$>xyNqqq|nD{ zJ!kGpEkC$k|4NT%v(}dCwQF~oabCV&FSQ^%@7<#Cx*H4i!{k?fs6J(JOhWl|g0>Lo zpqb+$#`((+^5<=ceRMSEFypk%(@Mfhp09pec(RRojevD` z)#6_g*A`BEXtvpW{sl#5*Z%d}ejSLM>w7lrufpwg7QPJGz_f;`6N48x#QV=aZ@#K{ z3DX|iDf5!oEW7$m_+-|%8$QmttD;;ctUt^8?(8P*WsBEZ&RB8o{Qm{#<=?D-DBElQ z`CEomocnycg1K_i7ybI{Hacp5o4fIMOiyx;;ii@iakBD1D|TsGug@x*&ceWO<-o3{ z?jCWwwSGPCUa{UzeI})U<4yMSApUf3FXOl~*Vn9P?K58E?0h(PUu^xFL)T+#Kdf2! z*xI#y+Rx9AJzut+6Myr3>3O*~@2|`%O-p?J$(AC;|K47m`78@f^1 z@iL3==^o)S8hS3<#M z64BC@RWiw6EcsTX&VIYvdh^eL`$~zf5)<$Cou79-+x26 zrmg$wZz@x&Z5~S`_pojJc1?|$fuYY4R0d_owEPHv$CvZ%-H&G-Pi;&aS9f>ky}umN z-=DMmT<=OlrYXzgWZ$oP*QEIL?FY;H+n%-ies%m?A8*_qXMW_qcXIM#6EicfNh0NT z&YR8WUg-IH{LQMpp*MTZ99X66&2hR&K{51v&F0AS=WeXA(>-LmFp z9Xqp*Eopr9=Z?(L_!ByxBaRs!li*Ey%X^Q3p&@yL+$*DRetY@3SKMigUorRk?iq8R zKbRL{|2OLD^>^mSUw60v5{_du)6y3(l8#QBe8;}F_nM4PNtXSh!+*ZsI8k=%$Ek?i z%G^2cUR?K)%X{`W{rcUj-}Xi7yx}V9ys8B%H9Y693qRbx|6)UU-IaE4eho|I>xtJn zxIbKDFaNIh-Qt+xF_8~4%nSi*XOyeNvU2H$&Gj_hms(abW4~}!uvPVREgAD2v%`HK zy?V50|GitG+Uos5v)dd)@5(NSTA5cGpEFZ+;^g=hg84evCdDq-Ug++6da8Z>hW%yx zE#s7}UBgb9&OLe7;YR4}h&5qr@6?C!|I1%1W%Ffg-oN8Tv#0&LnN;#zqxZ#?6=#wq zj$4G+EnMogo}a-X_c+HFEq0+E@rSumamP7r3*UUz30wW>T)M?V^JmZBJzEvoAGbdJ zc$vwb$x;oAk}h5CTw8zExagDVr?W?^YTx;ZhF$XMnI_oy>*LFXzy2Kjx2!t8cMrSU zH0f($m8@cCZ&k!J$H%WI^FMzrJiGta*3++_s@=b_^G>qF@f+vPUcIqEp*x6&fgwbb zY0YXG4-eBjYBm?#OSLz;`MhR3#;rBq>s&~j*k|?rh&h#i%cD40vn4 zs>hyL^-HSN?Unk^3Zt40$Jb33zw&;m{MUQ2d%rw*aII`^a?*OWTeVr)EA7)|lC2ki z{oC^{ii3ecrd#ku=r&pV{P5k3Yn8Q9ABal}r(M^xc+D4j?+nvs4*o9}w?yy0b=Ayz zeZb{<%M~-F`?KF3JW@2h_Dp4x0i#&fnm2!L8NW{Ww{7yQ{co38xwXG|$Ea(%&^_6e z<)_u#s=3nbul9fcc2)O(#JeroH?(YTdo(W#DH6K4Bme<|0u&zIKjoh6ZHzrojK zCd6sR8#c{oWMy!es&ru2sWxR#uk$C(W42UO9CxdFHv6pKtE>5Kr8yblyF=N}S?y4N z_WjR}zOuLTww3rd{rhmxOLd8aehc>%7xB$K?{lVA7)GxQHCe53)`pW7`Ti*9KJeqHt2juw7I9x8YXQzA5v14wT_pVLmvt1wfa%%$HHQB$jB>8mt z=6YWKw6{<5NZn3%yXf_SbCr4f&6AQ3J$dyg=#{v3PjXIrNl(GSMr&^-28PG0o^xF3 z$r= zid`$CC+~W7ebv5STR6i1U;Fwr+dx3`$9CqbuvLG(GD{&Uv2y;QhLzSx>ul85mYcxZd&p z@Hy}Iw$T5{|Hb&;ot$cA&bM`S-jQ3*omz{pn6Ll#1?vrQYSs&L`-2M4b%e3M}w(s1nzL8~Yk) zsh;lbWy!DEf1bE|&|6dc@Xs$YhjXJ`SWaE_v@X15z4-X~)o=Dk_ax_B);MzhS@PSN zom`+6(yv}S?Sm_y`25}Sc*?`F(i)pDe|Gfwy_k4K&nQCpt;V-mbHi86lV^7GaGGm;|T9WWD=x@vjp+2ixepJ(0LGq)@@JHMu@?)yD1-TK5O3(Eo* zhVGx7dFLlj>Gnd+1YwbHV+d+_rqT4a(;V8|4@n zHt>6McqeX*`g)7s`c2ktBc%X)JKHlK!tSb8W_V=pEl5`1ee2v!q2+JYC-H9GxLnR% zR-XTBR$fhlmS`<=)%~w)-(*FLRcCEBF$v&)Tr}_9x~$6=eoS(e5YIVuv#u}c+jX<- z$A!BO&AFcUa#h?}+3hCp{GD&VXqC2p`FD4f^sf)|D=u!kVrJS=igUtV0ZZe9NM0|mRgBP*?D zNB#R86MfupTbG%^Z?8#Z7Axf$7!H)NM5O*md7AjPV{`t2OWRX-T-$5n=6m?{jjQ+0 zUUj{k_j=j)_pfrpt5=84vdUiluq-`j^VIN!nw{q#E8mvPQ}(RiyLI+2i8)sjyM3(F zf_qH7Tpwd>Bl(JZ;EdF#i!(9nfy`?d*tN=EItT;VG#?{BVKk+s6g zoNw)guXkf&zx+C~?$`CXd%OPEgPM02&un{|7u`44yyoov@40C^&OUv`Cb3#@YSwYS z%Dyxeos8gv4eM9cY`U~BGr9Se*@f->JS840E*l&PkGHcqudfc`htn^=*%!80z~0t;-Qv2MsukPz)-`Y2W9C;pUt-a5_ie#*+d_O|1+Fe$il#2rgT8-xc={RFJ5nTf1CII@yli6`L7oJ_?~z5j6MIQz0Fap z(l=LSNjzHZ5bu9=?c=p!yiK4!K>odZvF!irHjCLA`@B_t`#;V4T}|7(Us;pyzBQNI z`uFzT)4uz+&%d{8Z}m*qyUew=rT@RK-SU0y>@OcKn0+hT7_-}7O8$!*%g?NPlbuDf z4hO9h6Kst7bf>^~-^R_hcPFbjZ#B@a^B2?R8Gibx^ZV!buSM5y+|W2%UDRQ=-)h~J)Q-~E71p|Cw+~;7jL4N{wJ!0DO+9&5|BCVb zoNc>neeN>oR+Y{8wzqWhJju(Bu}Mx(U&eha(7JKnd;japA>H$3*DXEYZxCYhr>K%u ztakIc8#9)e^(E&dzD{GEwB^--$ivUe3n%WY*|8tgtUmMn@b%NN@9$g;&i}u!{b4o( zL%{8TBX`-p*Y642=zHkOB?rTMtAAGQ%y#OR@O|;{PVUpSVK3kHhlOVxpEti;{lz}V zW3PjD?(p#M%Ukbx_*TZ@i7IdH=dQZ4CZ=-dZc+XMYjeJ}Q>^q)e^-0ac<@-f^ZjWL zZ+(8|`|G#=Zqst_IejY2M6dttyM39QiTJ$#CnRWDO2 z&YgRn)T+ky|3aR9I@>=@_DXTGwbZJK*LC*vmHF)s^sn9P8NbGE(VwESkencW2l=~~ zudlo1_IcYplRL*G!`|61Zp>9WWqa=M*-+UdDI)$Q88YrM@S zZ@1;mT9$W8f6I%6L$0wW&RjjZ#wPWd*ootpeM@U>u5O8IxZ4=&`FC4-TY9ea@hQj8 zUUiL4I+SDg@A=(hub0_c?AV(3`tFrykL9Ir`mN@lca?wkW1e_!hK5^B45!&7Er0HM zIX4y5>ukTWuVC3pmFe8v9r#oF7uU$4Erd-Z|~i+b)b{jA=3J5*wy&c3H-99F*cQ%QaCrB%n2=i}DZ zwap3frX2gWtzFH@m3aNh^=;;Mu9NrQUX{7MboGTwnZMPGsxR;Q^=)F~u7~fvLo+lh zSNi{H_4!-;(eAM6Z>K+dzkICy`{jD{?yP&)Cf_PC@l-#b{wgVKp3R+D(KpXmUgK>t z*^t|^F8}s{b@xTH`Bk&7dltVb`u6!9%ifA$@!5TEFIjAfVvCqm^1E7l%hRoeT>K_s ztJkQ=<*myKZthg>+UTX%ioq(XnCJc z`x>&|?`GnW?#R;<$}ji_K(xgQB+OZjRq28PS$%_EFr(^x@sqr{`7~cR$~MH>doq-paDx zwl&z z#S?a%RW%gN;AU{}b#F)o~erbi#lPuJ4e@`7J} z-6l(xTLn+%yqml4n26%vW6GYhzP$Xk>fJHZx?6>(mOYkg{jsw6@vEKE4^=;JpL=CP zW_QWOV|T^1LB;y6zk5abtmAVfk54&v_iX55EB9L^YmR1JJ;QsPH~#QFsm4h;>;AGc zIOHDLKdCHY!`~%U`z_+xeLp<>GI?ry$^S1~mtLz`+3`F*XXTXZJ2KMu_{D2fUu)T$ zw#I&$`SbThr*`V6zb=}6dTXwTPWAw8> zYE5syx`laF$1N(-*xIamzyOfo`;v~2K99|wRorH+T?w%HeTjEWpef7 zn$`SsLf^zc%bI&I%KhB8v%3~c{kvknq+^|HJ#Wp8=g%{K>5H!493r^=Yu>8ezqS{g+IhM7lj*yB``cR| zPh1=J&VDuLd%ep$x8y93eLOSY?6rKi*1j)`OwxlkU&%hT$Ee(1yR&`v>MGOq&zHo7 z%7eP`)u|ef!M$)Wbd%rB6H+$pJ5ATcJPoL7g zpge!=^|$ZW7DOG0ls;ytx^rRnmb1s}wjSGe|GqTe{NQD>=P$hEjWy$6hn`zDl`m z)Hdr~WB>Jxr~fvG-sN2mj@KrqZng7wR@LeMUGY|Z&i*9^>iYvOKYJUpUHn9z1vgbr|N8;y;;>ycK%<-|51C+zr4PR_wkI?y}es?51cxyzh(EdM8CR) zv8fXO{$0-7y$+Oi9UGo9oc^x1;`)@IQlGD#58XERM{RRd=G7^IT|A|K-kJXPTfXY_ z=i)EDz4B?Nip{pZV7~LecEhG0haHP{eNL;4{d8|qZC7nw-!=JlKNR*}NV`mDE zm7lxHTW4**`s3R5`W@?b?$J&>kXLrIvQ_HOFQ?__rmWU7{kb(Z_wGWM(!Zx;KppkB zz3U@3giMUKyKVzP=IXxkE)9;Y3D*w6bH`f1- z^!~0Q@o&Mbx#27P!)3!>tEazQx!ye1u=&yE(01PXX!%F)j~X3{7Zr*60vgRKK4tTF zgXOt(PcvG@RvQ)fURN&OHtWx=b!i);zTRAQIP3eD9Nx;>g?5pZE1c^0bL)oX+DuyF zZhwCP8-MNMYP+bnTU6_B`>SL>ncaQ$&&Qdw%<`A_sV@zGQM2=B>#xG!nt$)JYhQiw zF#pS?@3*JsIV+@y&D_cQE9Gh8?7qF#3Et}8mu1cII(OyC%xKZi&)=Io`P%yH`}yCp z+m2|f?+-ZrP349E{B_|^mPpR}asKJ8iX~Zx7JFxXvT&R9PB!It@vrUj+Gf&P#@ij7 z|L+RmEiK`ASI{ZgeT6meB;lfuUva8q* z?&JFOIb=cq@>f49R$NF54U20GGWsl1Zs&aRrKQyUy&Gd_^4WT zF3kRfyRxlpwRs__u{;oWE`f%vZpJGeXp1!)Vv*fK+rK9%u`B(jK`-iUP zUvM=tWX68BZJh!4r#%F@^8$lD>+i~yef{m9xO7gPI2rEbHO)^YHRJnA?psA~_JqB$ zPQEqEY5MAu>({Eh%UkzKM0U}^xE_(lOin{%RQ4`v1KIO<|ysq3heH1FkLCWK*8SsXLaR? z8cJrN>)Bnv^ z-uLF-@@&D*t_9ZKe--4v=0?WrDl=VGQVKZx`g-7At9zfmf19v>dwY$|-H?Ec&^*V5 zMn#{dRv1R72X8JlG4%Z{te5q>GbPt@+LAp?pV`GsQ)PmWA9v>bzc04VEN9-P68|Pp zQJ#2R?$*ME|1PZG`D+VLc*TN#9kJCyL7TVyIuPmm|LKI6W}wlZH5?m!GAfR{{Yty! z!1}W)?1jz!e5-}K?P6RXFfnYn4eI-~$QeGBGf(%PlUGxnsrrQ@E&W*GnajymFM4n9 zx>@q(LuU8ZitwMt%NZCPo+fcFZfhbT|Mfme_tk=)7GgpVOimszt^{Ks$72N z`2ITy-%A-78j1xIW=6RA?Ni&c+b1|JZ}o+B5&!PVRTUIySMDg>&B$=f_Ul!(*=Fx| z>~!zhWyZO>MQ)*$!C?!v1Gk;^@7y@KEV=%M%<`$f&r9uNV_;Yzqavl2zSV2}pAE6e z|G#a%wCU|?#*d&%{^PNvvh9ovH=aJ2+5M~FW@Ax*apA;!yEm7&a#bu&TluQ+%#@FF zL)Z8D?>r7#M)2kO>^Cpv7#LQlutZ!v()3pS>fhF#ZQI}1WgpD@`|hvk)uiRh3=Nfg zzx*wmUDopE;+l1GGM9D#)8?)(tp6VgDtBKs=&A1y z5WW|??EADgtM8m+WXRgG{+is?Grh-8+n&3AI@VZ?cS`^AXw@%VS3OgElke?Y+-~L4 zI;A=$uF-XW`Z6m9hO11BVWufty@JzoFaIc?re*v5RFx2@`2L&C{q^v(9a^ts85XEj ze|WsrYWA$ycZITxoxeOi%)Fw#HQSU)nCTdPh1#!z?XJj&uXXk9k~fcHKmNMibhj*?n}H!jPyDXgTrSV6F%#A=kDGPDb^ZCfE01(P zt=HybaBu|;KgG?zadla;eZ;Q#`d=w~eHV&n$-DO^A1lvZBiYY0rJc8QeV^L0mAAP+ z=iHjXz`!trnNf^^VZ-Tk{%_a+f6Y$2yz%q4c~{=wi(lBYdRh----jbBzEyqxmS?6L z>3i-(==+tQOJAHh>h(gBfuTTTngA06!|pquFJ|f9lFYxn5j6V>ZgIBU(l~P8`*Pmf ztl)~N6DO}X%-2=i!^E&aN(pqeP}xcSEiaC3pPuz{UQ1E`*%K$P?^&B;z;t}~go&$< z?)IBr9g~*V=(caC%WMAmt6Sn285rD^!TL_0)W0%g`?M*$v+uk)TX^b>?usRG3%C8O z`TEePzRu3py*ci$=W6~rYnRBu^@vWI9KQn8F1=r`Q|rF{6BFA4rDwUeE4w2rRsZFj zUn%l+mQnodKDE%I^$ZLR%7O`u3=LeHBi2@ZTI~y}xURo>BUY~%y#I}Du&b?e?u5zl zpxLna&(Hry7kYr24ik@T(Rv}uz)+yVq{G1Qz~Fwa#kz0j&+JR`d>EeHe<~^UaXxbxk=3{&rLMuruNcUJFWW?)#5W?8G~{rG<5D#u*u7e{AXz5X1k zBj56Qtz|{nYQ8yFzt8r2VSk!W!+igSRl8Xj7-UYkZufnz9SGS!KSRu$1AJftLqZly z1Vqfh6yz2VdxjJ!dO<9oUIx%@B@7G<%iJ132kbB~Fa(2x6?FB>N|47v$_`xN*Z`s# zMvWVWVK+xb=Rowe_3x*BeZBkZi;ivJ)d7))l~dNl-(SnC-@o?Nx{z%5dpjeqt$%;5 z$CEkNYTo_mr=PzST;?_}yR^>ynD*<-)>DoC^3|63-(U4kjDdk6;PKAzQuZ@xPW=*R z|9n>1eVhIM=hmRjpJZ+*hfFJf_hO}CtkTzahxS(GpWNq_-~Vd$uDicqU5nog>R9Pd zb_b2!9<6`&_~o(-4C}StguVn7`|Yo1WjpmtfZ8(~<}WuY;w~{U^z|;Ad+oRV`^zu6 zBSY`{f-as@J9EHk?FCJ%Efr}e*Y2Ga^SM~w-`v(}(b`#U*Dp?9eA{}DZPvOjJL{>v z=~wIcdGbPK;&g9MUXXZMY~|%*`xmY6w}lm+Uw75cDB}0OvdMOPcK5Sw&t9;rbkEaw z&sHhK`yV~l@^WXPZ0V1;(O=qM&k8RM2W7O`2F$Ouy33EP{yO>o^dFl+jfjTr?bF^^ zt+lV;x9~{vrA?pb-n6ywEQ?#1mS?jraIVtVqpy^w-jll;Ub_4H)wTQ6j8+v-QPKRE zwC&iR+|Es(xmNFRSABhR&Ae$g_A!k2zO%Ms{T8Zv~gNB&#Lv&|2FRNy1n?< zs=V*}c746BqtsNR;(6O&WwzO#PajJzr}M`xXUOM|J#*?ZsFC#W#7^zL$ZCzi`RlBf zlF%F;oJ7FU4q&c)`fzPO*tUs#K4gA z;9b}k&={HJVQtS}moJ!Q2?}a>R=t>9dc7rl`W)Z0*B-~`Oi^L|S@r7NKiyL{`5p78 zTe-EbNG|EvW7|{zJ@n!?P?59vgx90@Zx=3i+kU-8&M+%T-=UIK>}`+tHGA>*m)GDF4j;rQ!LVS3&*Qw+mgq))qPz&Q5z+TJmG=Y*kNCcYoRcq7Sn^@7ldn>woud z70>l&Zw4mi&R8fb^=jQe-7CvocN}7_oiaIoMeXw7FK>S(gSt6W!wa5fb8&wNyHsDN z?z!uy{OPS3=`|m#C4%KVAKwW#Glcf8l>_nonkXH9NjMwfoOyo}=+6ri5%s zj=ucC>Q~uc!@IxM$ID#$m-X$QzdpaYt;LS1YTvRJnejG1ef)CSk}Wc8t*5N`KJCrr zQ-9OFbHeAH+9Mt=EiJv&y=`mg^cjoNKm6EPa`s-0Q@-wv+#jVOUv92>@p{#Z&B~VV z<)$B*mL56@wD{-`udL}BXJuEGpP-@DYjR#!qPfem?=C!&-M9Zw?VjI@uih%wa$WEH zW|iF8SErITYJKuIo-*(AZKKy+HuX#A{{Ja$_3GwESyj)y%g)P{(iSKK8dt&0Bx>ehmL}bH|O0$o>1GCzX6S6+zS6!{M9*mo6SLsolHnO==_ew)sI` zY3rK)?lD)>Z4(_umS6 z#NN)Bt7P(f<7?43-*5AU@0$c#D=}Z};jh~J%cOoD6Iz-wZQq;6S$cYx>fgUzzMDPf zXKrU(zjqx^CWJRLr$5(|A#^^4S?C z9;G!l>wbLxHt}GVyyO~o_U+en|3|Dly8Ds$-n_{7@tIOAzgKzttWe2(cWrX2oVF)x ztJvP{Df4fc@Prk)`RzOoI=U&elVP=xjn$&HMn#{#UiyA}YexDWuC-xbvnAJwtCs{e zY;TX-s~R?colS}B--+KQ9*p|)rl4}yZcwk%cjivt+mFw!PTVj*@Ach~exCfr^Ul7? z{8d|9dfEDP&b!me%C|(@!$D&#pYP{gT(;Qr)Aw%|R-BtS%V^)`q~t>~|KvO_S(ks& z_;=vf#ZSyt^(X7*dYub7ED--UGei1reXVwBc2s!&-Fva$edB{4S%R9^kvmz<_D|29 zucdY3zNS^k?f+HHDlgCRhi4x9m2CEP=c2dzD^L9W^W@*_D|SW^KU>B2T4c|DmS?-N zXHHFNC+F4d?IoZdW>u9B``eD)3B`)fKyiG>dPQnsMd^>6S#k6B##%p`B>Lj<%8Ri| zUw@qV7G9IFKIhxMb*m*S%jOjJYiBw2OU(5?eeFu*ZP2RFPh4E43rbs-^}JsrP_MtY zJX}B5vMz3RzuMFr|GwAG*4%$#(aqWZ8R>UeckbLJ(r(vR@z2Zp|Ggg~Z#%rhmcIzN zdu8uNx&K9vO>>VQ6%$Q9ue~AT+p`@;_uKz24}MyIJ$=#==KA>yrU^DiZTPz+@5k>; zLjCWrZCUrs*3ji$-a4yFJLllETu^cJ+qHaR}Gh0g+Q2B7}@pIn& z^-D8jzHh%!di^AKs$BKSDKl^9Sb@$nT#>~RF;&5OeL!wJ|)@C+ts+-GL@XKkMnXK=npI>D5R(Y=h^<~cW zI&b~!Qnd5$hp$D~r+l2N>Zv}-=t}jgKiYOJ@9pQVTDn_!%eSK!KYcBFvsm!O>y_+m z+o!4gE&u6w*SS`LWmw zpZ0Rz`t!=7vU11EtFx0$b8amXx}E+^EaO8q_xhCwpR54oSno^W+5M}6OI9p8^yli{ z%-GyrS}D@f(z>2ed$jLe;JNl`#|{tBx{Nz_V@iKHO{?;ox!!o?{<9gjvt}%tUq1iZ zvhd?tItQZV?_c+yJMZ_xBgIp{{_-kbd18->>T>IMrJy!VnnOb<=e^h+%a25Iac`Ti z_3!<&udhY^mtR*)e06I{h8SqjQiso4@B6i;*s8i1cjzSWY^F7VbCpDYyxuf(<>qbE zESgi?V>WF&uDaU4`@^UB8H{18Lxu0@&Wa4V)zb_r?q}!)e)?Jz{@9>i)~5L5tmK}3 z)6)Vb{;vEfwB)osM|_cvFC4 zuJ7ZU16PO6ia%x?(W<&Z>#t<-G26119;2>S{Tp>b{JfdE;o{;)%{VVlie0|mQte~X z$@hyF&)a|LoW3WgW@OaH_dRS|a~I6sWq$2)e7@Gdn>X}a>*Y6p<}y8ha6h|yxn|U? zh>VS|e*3C>*}hx7)&1*w>*|wNkGfvpo*j_X5PI#kwy)^Ft)TQZr;p*Zie9{KX=YhN z`|Q<5c0ZkW<{oC+bIR6jl2qFdPpw%`1EUgC(m#JHxGY;cJ2U3GMrjXMXhcJKVPm%Y z%0*Mtm##YT_l*9Q7ya^UFMaRl3#(Yr|IE(NMSSxo&@u+y`?D9cT0iohGdHPw)eiBA z3ti7AIC+Kb+`V$GzV;Eo;=){@5?g_WNcjU%GvL{5nfecYB5BUItJ>z3s8< zW~t+)x?D5Ga_l41JktBUcl*g%PmhcFu~$WW^QRIm%ixQN|FWXa7jFK!>2uxgWz*aL zzJI#p{I%1k|DO7`H~Pxu*uUMc)cxk|3{4MS&vV01HQj0r=wQJBAtoK+RpG~%|7q3> zzQxnJ`scr@n5eR=E#YgW*)so4cD`b==LK_gT%)V{WaBCG=IVD}U6o+JUc0PrwWd~; zz4*J1@ZHPzUysjwu_U_cn8t@98w)d=%`6g@UAtveMI`u))*;~DdU zP0ufgw0taQ9sDiz^yNQ$d;c2;NuIy|eRkjL`}J>h^ZCv1-cfeD-KV}fup|DXn&`O| zs$#F=MeJ^WVm-L@!~KOAD|DvY8Qheru$K<m1nC;1|y*K~dvyR`DZ(?@6`af1}+qGTPf-T~>;zjc&_6 z+r8NI+1mMAE5d7bK3{*Ty6~msmv0Zk&tH|P?4PT9;P>`lZmDNYv^-O7>oafu1T96* zdndSf_O9bEK>HTHUBAnIdDG{wm-&wG@1LF~dTSHsv87Uh;zly!&))U=>;8MsH&M}S zYh_J}_0|rK5U;d#pxML3T2O+O>GhweR${d@L(?^7#eAcpPp9u%-3?o=Co*??V8{HL zy?4BI)Z)atzi#K!&RcivT0rkRnWZ!0w^z*nasFvk{f&siN3YII{BFGdz@n+Y&u2aT zx4EkFTN!AF2WYxK!CrrFtvmnL+Est}pN3ZIKRPEa%G%HKb#njm*_%Gge9j4fa??cG z{Z4Xvw&2Ixo3>vTU#A-qH|9<*NY&GXPbUp_tgna%z5_G_Q4X`nH`%nI4wcS0+d>#hD9Dikg*4jL^y z#I$E?P5#NRKS3R^%>`>;@jZx|&h-nlcInwXLq6;Gznop=MefGLnyd<5^6*>c&HY!q zJ2^h-ew5JvK1qJ%G+w6e|JCeF*)=n9>O!UOpVx0MyE@POI4JVG|NLCG*z;G( z(?rjp*KCevSNEa1Sf`zq$k z@54!3vrZc(pO(`8{4;uo^1h1pBfEcXztCVNIBALGYuWuZ0h6Zvm0|)l6ppRCxKz%3 zW4KSD>{faG+jlPs+Qk)mOuDklaYEjkuqt_#%!uP{M|U@!yC1ew8dNAVxXt`59II=d z?j7^-+w1(h_xA4K_;K~!tNTvz|1%r@U=b^*=Vt@*0-iyR!4gf7#fMzn^x+Gpg>% zOW(Hs#9y2F^Hy)`ZMwSLwPI!C`K6EkL{_qzoz((`MaA`(kG?;;8l5Eiq&nBbXjAZ# zDsz7Gl6ze?v(JUy+x!^RV(9P9S^ezmdR>Eiidrt^ap57SGd`ZXe3WtGTCLANPwQ{V zc-HoK(h_^#TxI|A@VWlyFP`5$*Z4L_jaALI46$olZtt2J@qb-l$NacGE4x)PzpoU@ zwRm(xGDH5)o_J18*ZSlCipxRkpF$oLD*lVB`u*Kj#q*@(&R=_4c7=il2WJW-%nZn@ zTPXLVV(pqRO`8ku(s6RD+uOE;`P^l=%KzzN>DpJXPq(wbsQ>=`a_-*Q(|#y!*z$Sb zhr3~(LERk=Yby(T+{*ic{wm0ua<5-}+-=+Cu9J(O#2(}6_l`bX-o zSiH{n(3gYqzh6v?PcN~!YG|cC7ng3;tJRBAeRY+Xw*Gr+xNEO}@YYOj3>kl#4e)$)>cfF*R^hkcg9;Tb7->wQS;CC6N20tB#4(Z`k)_dTsiZ#hG`ryCja!J%8cw z{56;B-@R0>&*$H3vhcL1{dw&TFCL4wmwaznG*fos!aB44YSAJhQD5#qWe2Ufd?g|q zwI^ovU*pYNpNDi^zJ0se{_>{Jpe+QT<-AJHe?h*k%6+uexHC-FVzv7ITM>EoOIGa{ zk6&xMs%+xHsq zy(-VX<-+Xk<@=wdi>(g*?i;@tw77cy_D%EmZ*3PURnlBs@$7NW*W+3x`#!C)D+mKk zE$Pe4Ets*3@w(0ZNmC}xT;2Kqk85=Q{Bke(Y43e6tk^#7#p-r;4Vw$@=lfr;cz(Qe z&$As{-qhSRuk|hb5j{=x_qmLt`;5!JuUzyNRJ$(v{D!BGmeOSHRy|Ba9WN_c8AdRr1c%?`)=y+mxtfI zV(V5~Vn8P(PApM&-oJzM$y>xBu|b}h`_66M08b>X=4%E-!FbxM(- zsL&6S-??Z)W#y`0aW>}3-PdG%t|TkpTA4lBpmNvlmo7oO>TU=vH-G;A((C=_Bn%fR z!Q&?U%AZ{IuiyNuzuei;2kLn#HPuX=Hg`E__e<`(bzHi&tIs??pEY&g?E)YF{+A0{ zrs%BwwN-7d@!6X~%cuFDx$;=~cJ`6=_18ah>srm5vd%L4(U*spn7#JQczeZ8=l0|U zV*Tf@FgHhM$K*@_Is3%*VDZhLOBEDDyUUKfUYyF_J^daN0|P_a^F_Cph2K+G3gOO< zlUZx0duZ#ofJMLd?O3pCH#38%(euuOQsUBU%f;VaO^(l5@#-C@?%cp^x`BbgH0-Z} zeD9yq>!Imy?ZEdf{{&5^m|pw**y`lrv!S59ogY1dLd)4f
  • Part 3 - Modeling ISQ
  • Part 4 - Implementing ISQ
  • Part 5 - Benefits
  • +
  • Part 6 - Challenges
  • Terms and Definitions

    From our experience, many people, including experts in the domain, often tend to name things diff --git a/HEAD/blog/2024/10/14/international-system-of-quantities-isq-part-2---problems-when-isq-is-not-used/index.html b/HEAD/blog/2024/10/14/international-system-of-quantities-isq-part-2---problems-when-isq-is-not-used/index.html index 508ca54b..bebda067 100644 --- a/HEAD/blog/2024/10/14/international-system-of-quantities-isq-part-2---problems-when-isq-is-not-used/index.html +++ b/HEAD/blog/2024/10/14/international-system-of-quantities-isq-part-2---problems-when-isq-is-not-used/index.html @@ -2403,6 +2403,7 @@ that only use units, those are still backed up by quantity kinds under the frame

  • Part 3 - Modeling ISQ
  • Part 4 - Implementing ISQ
  • Part 5 - Benefits
  • +
  • Part 6 - Challenges
  • Limitations of units-only solutions

    Units-only is not a good design for a quantities and units library. It works to some extent, but diff --git a/HEAD/blog/2024/10/21/international-system-of-quantities-isq-part-3---modeling-isq/index.html b/HEAD/blog/2024/10/21/international-system-of-quantities-isq-part-3---modeling-isq/index.html index 8caddd17..941ae926 100644 --- a/HEAD/blog/2024/10/21/international-system-of-quantities-isq-part-3---modeling-isq/index.html +++ b/HEAD/blog/2024/10/21/international-system-of-quantities-isq-part-3---modeling-isq/index.html @@ -2404,6 +2404,7 @@ language.

  • Part 3 - Modeling ISQ
  • Part 4 - Implementing ISQ
  • Part 5 - Benefits
  • +
  • Part 6 - Challenges
  • Dimension is not enough to describe a quantity

    Most of the products on the market are aware of physical dimensions. However, a dimension is not diff --git a/HEAD/blog/2024/10/28/international-system-of-quantities-isq-part-4---implementing-isq/index.html b/HEAD/blog/2024/10/28/international-system-of-quantities-isq-part-4---implementing-isq/index.html index ebce092f..d771503d 100644 --- a/HEAD/blog/2024/10/28/international-system-of-quantities-isq-part-4---implementing-isq/index.html +++ b/HEAD/blog/2024/10/28/international-system-of-quantities-isq-part-4---implementing-isq/index.html @@ -2343,6 +2343,7 @@ specifier, and described how it helps in the modeling of the system of units (e.

  • Part 3 - Modeling ISQ
  • Part 4 - Implementing ISQ
  • Part 5 - Benefits
  • +
  • Part 6 - Challenges
  • Modeling a hierarchy of kind length

    First, let's start with something easy - hierarchy of kind length. ISO 80000-3 does a good job diff --git a/HEAD/blog/2024/11/04/international-system-of-quantities-isq-part-5---benefits/index.html b/HEAD/blog/2024/11/04/international-system-of-quantities-isq-part-5---benefits/index.html index 1169bf93..f168ab77 100644 --- a/HEAD/blog/2024/11/04/international-system-of-quantities-isq-part-5---benefits/index.html +++ b/HEAD/blog/2024/11/04/international-system-of-quantities-isq-part-5---benefits/index.html @@ -2361,6 +2361,7 @@ how our ISQ model elegantly addresses the remaining problems.

  • Part 3 - Modeling ISQ
  • Part 4 - Implementing ISQ
  • Part 5 - Benefits
  • +
  • Part 6 - Challenges
  • Generic but safe interfaces

    Let's start with the implementation of a diff --git a/HEAD/blog/2024/11/05/mp-units-240-released/index.html b/HEAD/blog/2024/11/05/mp-units-240-released/index.html index 6e26da25..c9e5fdf5 100644 --- a/HEAD/blog/2024/11/05/mp-units-240-released/index.html +++ b/HEAD/blog/2024/11/05/mp-units-240-released/index.html @@ -18,6 +18,8 @@ + + @@ -2689,6 +2691,22 @@ It may mean that we should either:

    + + + + + + diff --git a/HEAD/blog/2024/11/11/international-system-of-quantities-isq-part-6---challenges/index.html b/HEAD/blog/2024/11/11/international-system-of-quantities-isq-part-6---challenges/index.html new file mode 100644 index 00000000..5846eadb --- /dev/null +++ b/HEAD/blog/2024/11/11/international-system-of-quantities-isq-part-6---challenges/index.html @@ -0,0 +1,2947 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + International System of Quantities (ISQ): Part 6 - Challenges - mp-units + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + + + + +
    +
    + + + + + + + + + + +
    +
    +
    +
    + + + + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +

    International System of Quantities (ISQ): Part 6 - Challenges

    +

    This article might be the last one from our series. This time, we will discuss the challenges and +issues with modeling of the ISQ in software.

    + + +

    Articles from this series

    + +

    Ambiguity

    +

    Some quantity names are ambiguous. It is not a problem of ISQ but of the English language and +the way we communicate things. When I say: "Every width is a length, but not every length +is a width" most people understand this right away. However, the same people trying to model +our 3D box problem +try to do it as follows:

    +
    class Box {
    +  quantity<isq::length[m]> length_;
    +  quantity<isq::width[m]> width_;
    +  quantity<isq::height[m]> height_;
    +public:
    +  // ...
    +};
    +
    +

    This looks correct at first sight. Only when we think about the sentence mentioned above will +we realize that this implementation has a problem. We intended to specify three orthogonal +dimensions of the box, each of which will be a strong quantity that is not convertible to others. +But we've failed.

    +

    When we look at the +tree of quantities of length +we immediately see that both width and height are special lengths so they are convertible to +it.

    +

    To implement our task correctly, we had to define and use a new quantity of kind length:

    +
    inline constexpr struct horizontal_length final : quantity_spec<isq::length> {} horizontal_length;
    +
    +

    We do not propose adding horizontal length to ISO 80000-3. There are probably other similar +cases as well, but so far, this was the most common and obvious one we've encountered.

    +

    No common quantities

    +

    ISO 80000-1:2009 explicitly states:

    +
    +

    Quote

    +

    Two or more quantities cannot be added or subtracted unless they belong to the same category +of mutually comparable quantities.

    +
    +

    This means that we should be able to add and subtract any quantities as long as they belong to +the same kind. However, ISO/IEC documents do not provide any rules or even hints about what should +be the result of such operations.

    +

    If it is possible to add radius and distance, then what quantity should be provided +in return? Undoubtedly, the resulting quantity type can't be the same as any of the arguments. +It is not a radius or distance. It is some closer unspecified length, though.

    +
    +

    Info

    +

    Finding the correct solution took us many months of experimentation and implementation. +Based on the hierarchy tree of quantities, we can define +conversion rules +and what a common quantity should be.

    +
    +

    Lack of consistency

    +

    The documents of ISO/IEC 80000 are not 100% consistent, and programming languages do not like +inconsistencies.

    +

    For example:

    +
      +
    • time is mentioned as a base quantity of ISQ in ISO 80000-1 chapter 4.5.
    • +
    • +

      ISO 80000-3 "Space and time", does not define a quantity of time. It provides a duration + quantity (item 3-9) with symbol t, and states in the Remarks section:

      +
      +

      Quote

      +

      Duration is often just called time.

      +
      +
    • +
    • +

      Other parts (e.g., IEC 80000-6 "Electromagnetism") often say:

      +
      +

      Quote

      +

      ... t is time (ISO 80000-3)

      +
      +
    • +
    +

    To be consistent, ISO/IEC should either:

    +
      +
    • change ISO 80000-1 chapter 4.5 and all references in other parts to use duration (unlikely),
    • +
    • or add time as an alias name to duration in the definition 3-9 of ISO 80000-3.
    • +
    +

    Lack of definitions

    +

    ISQ defines derived quantities in terms of other quantities provided in the series. However, some +definitions mention quantities that are not defined in the ISQ at all.

    +

    For example, weight is defined as \(F_\textsf{g} = m\;g\), where \(m\) is the mass of the body +(item 4-1 of ISO 80000-4 "Mechanics"), and \(g\) is the local acceleration of free fall (ISO 80000-3).

    +

    The problem here is that ISO 80000-3 never defines a quantity with a symbol \(g\) or named as a +local acceleration of free fall. The closest one we have is acceleration (item 3-11) with +a symbol \(a\).

    +
    +

    Info

    +

    To have a proper definition of weight in mp-units that is not defined in terms of just +any kind of acceleration, we have added isq::acceleration_of_free_fall in our definitions +as an extension to the original ISQ set of quantities.

    +
    +

    Not engineering-friendly

    +

    Many quantities have proper physical definitions, but they are sometimes not engineering-friendly.

    +

    For example, velocity is defined as a rate of change of position vector +\(v = \frac{\textsf{d}r}{\textsf{d}t}\), where \(r\) denotes the position vector (item 3‑1.10) and +\(t\) the duration (item 3‑9).

    +

    Next, a speed quantity is defined as the magnitude of velocity. Despite being +physically correct, requiring every speed to be derived from the vector quantity of velocity +in software would be inconvenient. If this was the only case, people would always need to use +vector representations of position vectors to talk about speeds, which differs from what we +do in practice. In practice, we divide any kind of length by time to get some kind of speed.

    +

    ISO 80000-3 provides length, height, distance and other quantities of kind length that when +divided by duration can serve really well to calculate speed.

    +
    +

    Info

    +

    This is why in mp-units, we decided to divert from the official definition of speed and +define it as:

    +
    inline constexpr struct speed : quantity_spec<speed, length / time> {} speed;
    +
    +

    This allows us to create a quantity of kind speed from any quantity of length divided +by time.

    +

    Additionally, it is essential to note that for the needs of our library, defining velocity +as position_vector / duration would be wrong. We miss the delta part here. Even though it is +not mentioned in ISO 80000-3, the delta of position vectors is actually a displacement. +This is why our velocity is defined as:

    +
    inline constexpr struct velocity : quantity_spec<speed, displacement / duration> {} velocity;
    +
    +

    Please also note that velocity is defined as a more specialized quantity of speed.

    +
    +

    Affine space agnostic

    +

    The affine space is a powerful +abstraction, allowing us to model some problems safer or more accurately. It has two types of +entities:

    +
      +
    • point - a position specified with coordinate values (e.g., location, address, etc.),
    • +
    • displacement vector - the difference between two points (e.g., shift, offset, displacement, + duration, etc.).
    • +
    +

    Vectors support all the arithmetics operations, but points have some limitations. It is not +possible to:

    +
      +
    • add two points,
    • +
    • subtract a point from a vector,
    • +
    • multiply nor divide points with anything else.
    • +
    +

    ISO/IEC series does not acknowledge this abstraction even though it would be really useful in +some cases. Let's discuss the following two examples.

    +

    What does it mean to add two altitudes? It is not meaningful. On the other hand, subtracting +those should not result in an altitude, but in a quantity of height. Adding or +subtracting height to/from altitude results in altitude. Subtracting altitude from +height is meaningless again. Those quantities clearly model affine space. Maybe this is why +ISQ defines them as one quantity type height/depth/altitude?

    +

    What does it mean to add two position vectors? It is not meaningful again. However, subtracting +those results in a displacement as we noted in the previous chapter. Adding or subtracting +displacement to/from position vector results in another position vector, and subtracting +position vector from displacement does not have physical sense. Again, those quantities +perfectly model affine space. However, this time, those are defined as separate and independent +quantities (i.e., displacement is not modeled as delta position vector or position vector +is not modeled as a displacement from the origin of a coordinate system).

    +
    +

    Info

    +

    Currently, mp-units does not enforce the affine space behavior for such quantities. +Today, subtracting two altitudes result in an altitude and subtracting two +position vectors result in a position vector. However, we plan to support automatic +conversion to a proper quantity type on subtraction and addition shortly.

    +
    +

    Non-negative quantities

    +

    Some quantities in the ISQ are defined as non-negative. This is a really interesting property that +may be checked at runtime to increase safety. However, the number of such quantities is minimal. +From a few hundred quantities provided by the ISO/IEC series, only the following have this property +mentioned explicitly:

    +
      +
    • width/breadth,
    • +
    • thickness,
    • +
    • diameter,
    • +
    • radius.
    • +
    +

    If height was defined separately from altitude, it could probably also join this group.

    +

    Let's think a bit more about this. What does it mean that a quantity is non-negative? Indeed, +it is hard to imagine something of a negative width or radius. However, if we subtract +two widths, the second one may be larger. This will result in a negative +quantity of width, violating our precondition. So, is it non-negative or not?

    +

    Again, we have to talk about the affine space abstractions. Every empirical measurement can be +expressed as a point. Such points for some quantities may be non-negative indeed.

    +

    Non-negative quantities do not end on the ones provided above. For example, speed is a good +example here as well. In general, all magnitudes of vector quantities will also have this property.

    +

    When subtracting two points, we end up with a delta/displacement type, which may be negative +even for quantities listed as non-negative in the ISQ. As stated in the previous chapter, +having affine space abstractions acknowledged in ISQ would greatly help here.

    +

    Lack of quantity recipes

    +

    Definition of many derived quantities provides their recipes in the form of +quantity equations (e.g., weight equation +in the previous chapter). However, some of them do not. Instead, they often provide a very +generic description.

    +

    For example, force is defined as:

    +
    +

    Quote

    +

    vector (ISO 80000-2) quantity describing interaction between bodies or particles.

    +
    +

    This is not helpful for programming languages that like explicit definitions. Different +vendors may interpret the above differently, which will result in different implementations that +will not be compatible with each other.

    +

    As the derived quantity of force has to be a vector quantity, it has to be defined in terms of +at least one other vector quantity. We have a few to choose from:

    +
      +
    • displacement (\(\Delta{r}\)),
    • +
    • velocity (\(v\)),
    • +
    • acceleration (\(a\)).
    • +
    +

    It is not stated explicitly in ISQ which one of those should be used and how.

    +
    +

    Info

    +

    In mp-units we decided to define force as \(F = m\;a\).

    +
    +

    Lack of generic quantities and name conflicts

    +

    In the previous chapter, we complained about some definitions needing to be more complex or generic. +On the other hand, we also lack some generic quantities in ISQ that could serve as a root for +a quantity hierarchy tree.

    +

    For example:

    +
      +
    • ISO 80000-4 "Mechanics" defines power <mechanics> as \(P = F\;v\) (scalar product of force \(F\) + (item 4-9.1) acting to a body and its velocity \(v\) (ISO 80000-3)),
    • +
    • ISO 80000-6 "Electromagnetism" defines power as \(p = u\;i\) (scalar quantity given by the + product of instantaneous voltage \(u\) (item 6-11.3) and instantaneous electric current \(i\) + (item 6-1)).
    • +
    +

    First, the above definitions have somehow conflicting names which makes it hard for the programming +languages to name them consistently by different vendors.

    +
    +

    Info

    +

    In mp-units, we chose mechanical_power and electromagnetism_power for those.

    +
    +

    Second, we do not have any other more generic definition of power to put above those in the tree. +Not having it makes it hard to answer what should be the result of:

    +
    quantity q = isq::mechanical_power(42 * W) + isq::electromagnetism_power(60 * W);
    +
    +
    +

    Info

    +

    To solve the above problem, we have added isq::power in mp-units, that has a really +generic definition of:

    +
    inline constexpr struct power : quantity_spec<mass* pow<2>(length) / pow<3>(time)> {} power;
    +
    +
    +

    Invalid definitions order

    +

    Energy is defined a bit better than power, but still not without issues.

    +

    The first time ISQ mentions energy is in the ISO 80000-4 "Mechanics". It defines +potential energy, kinetic energy, and a mechanical energy as the sum of the first two. +Right after that a mechanical work/work is defined.

    +

    Then ISO 80000-5 "Thermodynamics" defines energy <thermodynamics> as:

    +
    +

    Quote

    +

    ability of a system to do work (ISO 80000-4).

    +
    +

    Next, internal energy/thermodynamic energy is defined in terms of the change of heat.

    +

    From the above, it seems that what is called energy <thermodynamics> should actually be +the root of our tree and probably be provided in Part 4 before the mechanical energy is defined.

    +

    Hierarchies of derived quantities

    +

    Derived quantities of the same kind are often independently defined in the ISQ. The ISO/IEC 80000 +series often does not suggest any hierarchy between those. Even more, it states:

    +
    +

    ISO/IEC Guide 99

    +

    The division of ‘quantity’ according to ‘kind of quantity’ is, to some extent, arbitrary.

    +
    +

    Because of this, it is unknown or ambiguous how to form a hierarchy tree for such quantities.

    +

    To get some sense of the complexity here, let's look again at our tree of quantities of a kind +energy:

    +
    flowchart TD
    +    energy["<b>energy</b><br><i>(mass * length<sup>2</sup> / time<sup>2</sup>)</i><br>[J]"]
    +    energy --- mechanical_energy["<b>mechanical_energy</b>"]
    +    mechanical_energy --- potential_energy["<b>potential_energy</b>"]
    +    mechanical_energy --- kinetic_energy["<b>kinetic_energy</b>"]
    +    energy --- enthalpy["<b>enthalpy</b>"]
    +    enthalpy --- internal_energy["<b>internal_energy</b> / <b>thermodynamic_energy</b>"]
    +    internal_energy --- Helmholtz_energy["<b>Helmholtz_energy</b> / <b>Helmholtz_function</b>"]
    +    enthalpy --- Gibbs_energy["<b>Gibbs_energy</b> / <b>Gibbs_function</b>"]
    +    energy --- active_energy["<b>active_energy</b>"]
    +

    Not being exact means that every vendor may implement it differently. This will result in:

    +
      +
    • +

      different convertibility rules among quantities:

      +
      static_assert(implicitly_convertible(isq::potential_energy, isq::mechanical_energy));
      +static_assert(explicitly_convertible(isq::mechanical_energy, isq::potential_energy));
      +
      +
    • +
    • +

      different common quantities resulting from the arithmetics on various quantities of the same + kind:

      +
      static_assert((isq::potential_energy(1 * J) + isq::kinetic_energy(1 * J)).quantity_spec == isq::mechanical_energy);
      +
      +
    • +
    +

    It would be great if ISQ could provide specific division of quantities into kinds and more +information about the position of each quantity within the hierarchy of quantities of +the same kind.

    +
    +

    Important

    +

    We can try to do this by ourselves, but it is tough. Probably no one, for sure we are +not, is an expert in all the fields of ISO/IEC 80000 applicability.

    +

    We need the help of subject matter experts who will help us build those trees for their domains +and then verify that everything works as expected.

    +
    +

    The same or a different kind?

    +

    Some quantities are more complicated than others. For example, power has:

    +
      +
    • scalar quantities expressed in:
        +
      • W (watts) (e.g., mechanical power, active power),
      • +
      • VA (volt-ampere) (e.g., apparent power),
      • +
      • var (e.g., reactive power),
      • +
      +
    • +
    • complex quantities expressed in VA (volt-ampere) (e.g., complex power).
    • +
    +

    How should we model this? Maybe those should be two independent trees of quantities, each having +a different unit?

    +
    flowchart TD
    +    power["<b>power</b><br><i>(mass * length<sup>2</sup> / time<sup>3</sup>)</i><br>[W]"]
    +    power --- mechanical_power["<b>mechanical_power</b><br><i>(scalar_product(force, velocity))</i>"]
    +    power --- electromagnetism_power["<b>electromagnetism_power</b> | <b>instantaneous_power</b><br><i>(instantaneous_voltage * instantaneous_electric_current)</i>"]
    +    power --- active_power["<b>active_power</b><br><i>(1 / period * instantaneous_power * time)<br>(re(complex_power))</i>"]
    +
    +    apparent_power["<b>apparent_power</b><br><i>(voltage * electric_current)<br>(mod(complex_power))</i><br>[VA]"]
    +    apparent_power --- nonactive_power["<b>nonactive_power</b><br><i>(sqrt(apparent_power<sup>2</sup> - active_power<sup>2</sup>))</i><br>"]
    +    nonactive_power --- reactive_power["<b>reactive_power</b><br><i>(im(complex_power))</i><br>[var]"]
    +    apparent_power --- complex_power["<b>complex_power</b><br>{complex}<br><i>(voltage_phasor * electric_current_phasor)<br>(active_power + j * reactive_power)</i>"]
    +

    This will mean that we will not be able to add or compare active power with apparent power, +which probably makes a lot of sense. Again, ISQ does not provide a direct answer here.

    +

    More base quantities?

    +

    Is ISQ really based on only seven base quantities? Let's look at the definition of +traffic intensity in IEC 80000-13 "Information science and technology":

    +
    +

    Quote

    +

    number of simultaneously busy resources in a particular pool of resources.

    +
    +

    It looks like a definition of a specialized dimensionless quantity or, more correctly, a quantity +of dimension one. This would not be the only such case. Even in the same Part 13, we can find +quantities like storage capacity with a similar property.

    +

    Only when we look closer do we start to see differences. All dimensionless quantities, even if they +have their own dedicated units, can also be measured in a unit of one (1). This is true for +storage capacity (also measured in bits), angular measure (also measured in radians), +_solid angular measure (also measured in steradians), and more.

    +

    However, traffic intensity can only be measured in erlangs (E), not in a unit one (1). +Does it mean that it is a "hidden" 8-th base quantity in ISQ? If so, should it have its own +dimension as well?

    +

    Angular quantities are another interesting case here. Scientists have written petitions and papers +for years to make them an additional dimension in ISQ and SI. More about this can be found in +our documentation's Strong Angular System +chapter.

    +

    Summary

    +

    ISQ is tremendous and solves many problems we had in modeling various subjects for years in +software. As a result, we have more powerful tools in our hands that allow us to deliver safer +products.

    +

    Unfortunately, ISQ, contrarily to SI, is not widely recognized, and no libraries besides +mp-units model it in any programming language. Keeping it behind a paywall does not help +either. We hope that posts from this series will spread in the community, raise awareness +of ISQ and its benefits, and encourage authors of other libraries to implement it in their +products.

    +

    Despite all the benefits, it is essential to realize that ISQ has many problems. International +standards should be specified in such a way that there is no room for ambiguity in their +interpretation by different parties trying to use them. As described above, this is not the case +here.

    +

    ISQ is not ready to be unambiguously modeled in software by various vendors. Here are the most +important problems to solve to allow this:

    +
      +
    1. ISQ needs to define basic operations on quantities:
    2. +
    +

    - what the result of addition and subtraction should be when arguments differ, +    - convertibility rules.

    +
      +
    1. The exact quantity equation recipe needs to be included for many derived quantities.
    2. +
    3. Many ISQ quantities do not provide their exact relation versus other quantities of the same + kind (no strict hierarchy).
    4. +
    5. Some missing quantities need to be included. Others would benefit from corrected names.
    6. +
    +

    Additionally:

    +
      +
    • extending ISQ with affine space abstractions,
    • +
    • specifying more quantities as non-negative,
    • +
    • adding more base quantities (i.e., angle)
    • +
    +

    could improve the safety of our programs and products that people depend on with their lives on +a daily basis.

    +

    I hope you enjoyed following this series and learned more about the International System +of Quantities. Please try it out in your domain and share feedback with us. We always love to +hear about the projects in which our library is being used and about use cases it helps +address.

    + + + + + + + + + + + + + + + + + +

    Comments

    + + + + + + +
    +
    + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HEAD/blog/archive/2024/index.html b/HEAD/blog/archive/2024/index.html index 997c0423..1b6f5c67 100644 --- a/HEAD/blog/archive/2024/index.html +++ b/HEAD/blog/archive/2024/index.html @@ -2187,6 +2187,54 @@ You're not viewing the latest version. + + +
    +

    International System of Quantities (ISQ): Part 6 - Challenges

    +

    This article might be the last one from our series. This time, we will discuss the challenges and +issues with modeling of the ISQ in software.

    + + + + +
    + + +
    +
    + + +
    - - @@ -2696,7 +2696,7 @@ WG21 groups reviewed proposals, and the feedback was really good.

    diff --git a/HEAD/blog/archive/2024/page/2/index.html b/HEAD/blog/archive/2024/page/2/index.html new file mode 100644 index 00000000..63fab4a7 --- /dev/null +++ b/HEAD/blog/archive/2024/page/2/index.html @@ -0,0 +1,2332 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2024 - mp-units + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + + + + +
    +
    + + + +
    +
    +
    + + + + + + + + + +
    +
    +
    + + + + +
    +
    +
    +

    2024

    +
    + + + + + + + + + + + + +
    +
    + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HEAD/blog/category/metrology/index.html b/HEAD/blog/category/metrology/index.html index 6a34ae99..9d1fad59 100644 --- a/HEAD/blog/category/metrology/index.html +++ b/HEAD/blog/category/metrology/index.html @@ -2187,6 +2187,54 @@ You're not viewing the latest version. + + +
    +

    International System of Quantities (ISQ): Part 6 - Challenges

    +

    This article might be the last one from our series. This time, we will discuss the challenges and +issues with modeling of the ISQ in software.

    + + + + +
    + + +
    +
    + + +
    +
    +

    International System of Quantities (ISQ): Part 6 - Challenges

    +

    This article might be the last one from our series. This time, we will discuss the challenges and +issues with modeling of the ISQ in software.

    + + + + +
    +
    + +
    +
    + + +
    - - diff --git a/HEAD/blog/page/2/index.html b/HEAD/blog/page/2/index.html index 6bad25e2..e2651f5c 100644 --- a/HEAD/blog/page/2/index.html +++ b/HEAD/blog/page/2/index.html @@ -2173,6 +2173,54 @@ You're not viewing the latest version. + + +
    +

    Report from the Tokyo 2024 ISO C++ Committee meeting

    +

    The Tokyo 2024 meeting was a very important step in the standardization of this library. Several +WG21 groups reviewed proposals, and the feedback was really good.

    + + + + +
    + + +
    +
    + + +